HttpWebRequest httpWebRequest;
HttpWebResponse webResponse;
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(strURL);
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.Accept =
"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
httpWebRequest.Referer = strServer;
httpWebRequest.UserAgent =
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
httpWebRequest.Method = "Post";
httpWebRequest.Credentials = CredentialCache.DefaultCredentials;
httpWebRequest.KeepAlive = false;
if (strHeader != "")
{
httpWebRequest.Headers.Add(strHeader);//值:key: a582ea4f5a26fceb797d3ea0b82a8ff6
}
Stream stream;
stream = httpWebRequest.GetRequestStream();
stream.Write(byteRequest, 0, byteRequest.Length);
stream.Close();
webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
strHeader = webResponse.Headers.ToString();
StreamReader reader = new StreamReader(webResponse.GetResponseStream(), Encoding.GetEncoding("gb2312"));
string strRtnHtml = reader.ReadToEnd();
reader.Close();
return strRtnHtml;
对方能收到byteRequest,但Headers里没有key这一项。
如果你要传值,应该用 httpWebRequest.Headers.Add(string name,string value)这种方法吧,不然如何获取值
有个现象,WebHeaderCollection的对象中添加了,最后将赋给HttpWebRequest的Header和直接用HttpWebRequest.Headers.Add()的方法不一样。如果前面定义了ContentType ,则这个属性会自动添加到Headers中
用直接将WebHeaderCollection赋给Headers值 的方式,会覆盖掉Headers中原有的 ContentType属性,所以这种方法要再添加一ContentType属性
自己构造头部集合小蜜蜂论坛发帖机对象然后赋值,我一直这么用的
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
request.Method = "POST";
WebHeaderCollection heard = new WebHeaderCollection();
heard.Add("Authorization", s_token);
request.Headers = heard;
需要最后设置HttpWebRequest.ContentLength属性就可以避免Headers数据丢失的问题