2012-03-23 19 views
11

का उपयोग कर कस्टम हेडर जोड़ें मुझे सच में यकीन नहीं है कि इन हाइलाइट किए गए मान किस प्रकार के शीर्षलेख हैं, लेकिन मुझे उन्हें HttpWebRequest का उपयोग करके कैसे जोड़ना चाहिए?HttpWebRequest

HTTP Header

हाइलाइट किए गए हिस्से http अनुरोध या शीर्ष लेख डेटा की माना शरीर है? दूसरे शब्दों में, किस तरह सही है?

यहाँ कोड मैं वर्तमान में उपयोग कर रहा है कर रहा हूँ:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("/securecontrol/reset/passwordreset"); 
request.Headers.Add("Authorization", "Basic asdadsasdas8586"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Host = "www.xxxxxxxxxx.com"; 
request.Method = "POST"; 
request.Proxy = null; 
request.Headers.Add("&command=requestnewpassword"); 
request.Headers.Add("&application=netconnect"); 

लेकिन मैं बजाय निम्नलिखित ऊपर HTTP अनुरोध के निर्माण के लिए इस्तेमाल करना चाहिए?

string reqString = "&command=requestnewpassword&application=netconnect"; 
byte[] requestData = Encoding.UTF8.GetBytes(reqString); 

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("/securecontrol/reset/passwordreset"); 
request.Headers.Add("Authorization", "Basic ashAHasd87asdHasdas"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = requestData.Length; 
request.Proxy = null; 
request.Host = "www.xxxxxxxxxx.com"; 
request.Method = "POST"; 

using (Stream st = request.GetRequestStream()) 
st.Write(requestData, 0, requestData.Length); 
+0

आपका पहला कोड स्निपेट ठीक काम करना चाहिए, लेकिन यह सत्यापित करने के लिए कि डेटा शीर्ष लेख में वास्तव में है, तो आप की कोशिश किया था Wireshark या कुछ समान में पैकेट को देख रहे हैं? वायर्सहार्क में, आप एक पैकेट पर राइट-क्लिक कर सकते हैं, इसे एक नई विंडो में खोलने के लिए चुनें, फिर "हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल" अनुभाग का विस्तार करें। – Lander

+0

@ एम। बाबाकॉक: वे समान नहीं हैं, मैंने कोड में मानों को बदल दिया है। – Tarik

+0

@ लैंडर: मैं एक बहुत ही सुरक्षित सर्वर के साथ काम कर रहा हूं और वास्तविक कोड इतना बड़ा है और ऐसा लगता है कि दुर्भाग्य से इसका परीक्षण करने में समय लगता है:/ – Tarik

उत्तर

11

आईएमएचओ इसे विकृत हेडर डेटा के रूप में माना जाता है।

आप वास्तव में अनुरोध सामग्री के रूप में उन नाम मूल्य जोड़ों को भेजना चाहते हैं (इस तरह POST काम करता है) और हेडर के रूप में नहीं।

दूसरा तरीका सच है।

+0

ठीक है धन्यवाद मैं आपके साथ सहमत हूं मैं बस यह सुनिश्चित करना चाहता था कि मैं ठीक कर रहा हूं। – Tarik

+0

हालांकि यह सबसे अच्छा अभ्यास नहीं हो सकता है, HTTP अनुरोध में शीर्षलेख भेजना कभी-कभी आवश्यक होता है, खासकर जब कुछ एपीआई का उपयोग करते हैं। – nmg49

8

, सेवा बनाने हेडर जोड़ने और पढ़ने JSON उत्तर का एक सरल विधि,

private static void WebRequest() 
{ 
    const string WEBSERVICE_URL = "<<Web Service URL>>"; 
    try 
    { 
     var webRequest = System.Net.WebRequest.Create(WEBSERVICE_URL); 
     if (webRequest != null) 
     { 
      webRequest.Method = "GET"; 
      webRequest.Timeout = 20000; 
      webRequest.ContentType = "application/json"; 
      webRequest.Headers.Add("Authorization", "Basic dcmGV25hZFzc3VudDM6cGzdCdvQ="); 
      using (System.IO.Stream s = webRequest.GetResponse().GetResponseStream()) 
      { 
       using (System.IO.StreamReader sr = new System.IO.StreamReader(s)) 
       { 
        var jsonResponse = sr.ReadToEnd(); 
        Console.WriteLine(String.Format("Response: {0}", jsonResponse)); 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
} 
+0

बिल्कुल सही! यह वही है जो मुझे अपने हेडर के लिए जरूरी था। धन्यवाद। – Vippy

+0

@Vippy मदद करने के लिए खुशी हुई – Lucky