使用HttpWebRequest添加自定义标题
问题描述:
我不确定这些突出显示值是什么类型的标题,但我应该如何使用HttpWebRequest添加它们?使用HttpWebRequest添加自定义标题
是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);
答
创建服务,将报头和读取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());
}
}
你的第一个代码段应正常工作,但以验证数据实际上是在标题,你有没有尝试在Wireshark或类似的东西看数据包?在Wireshark中,您可以右键单击数据包,选择在新窗口中打开它,然后展开“超文本传输协议”部分。 – Lander 2012-03-23 16:12:55
@M。巴布考克:他们不一样,我改变了代码中的值。 – Tarik 2012-03-23 16:13:12
@Lander:我正在使用一台非常安全的服务器,实际的代码非常大,似乎需要时间才能对其进行测试:/ – Tarik 2012-03-23 16:51:36