2012-03-23 102 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或類似的東西看數據包?在Wireshark中,您可以右鍵單擊數據包,選擇在新窗口中打開它,然後展開「超文本傳輸​​協議」部分。 – Lander 2012-03-23 16:12:55

+0

@M。巴布考克:他們不一樣,我改變了代碼中的值。 – Tarik 2012-03-23 16:13:12

+0

@Lander:我正在使用一臺非常安全的服務器,實際的代碼非常大,似乎需要時間才能對其進行測試:/ – Tarik 2012-03-23 16:51:36

回答

11

恕我直言,它被視爲格式錯誤的標題數據。

您實際上想要發送這些名稱值對作爲請求內容(這是POST的工作方式)而不是作爲標題

第二種方法是正確的。

+0

好的,謝謝我同意你的意見我只是想確保我的工作很好。 – Tarik 2012-03-23 23:21:55

+0

儘管這可能不是最佳做法,但有時需要在HTTP請求中發送標頭,特別是在使用某些API時。 – nmg49 2016-10-30 12:22:06

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 2017-08-17 19:36:19

+0

很高興幫助@Vippy – Lucky 2017-08-18 07:30:23

相關問題