2012-03-23 105 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

相关问题