我在.net 中使用WebRequest 类并将数据发布到响应响应的服务器。
奇怪的是,当我开始使用 fiddler 来分析我的网络流量时,它可以工作,但没有 fiddler 就不行。
所以我开始分析使用 WireShark 发送到我的计算机和从我的计算机发送的包。在这个程序中,它很容易遵循 TCP 流。因此,当我打开提琴手时,我可以看到发送了正确的 Request-header/body,并获得了 Response-header/body。奇怪的是,当我不使用提琴手时,请求标头被发送,然后我得到了响应标头/正文,最后是 TCP 流末尾的请求正文。
这是我一直在阐述的代码:
string lcUrl = "http://XX.XX.XXX.XX";
// *** Establish the request
HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
string lcPostData = testdata;
loHttp.Method = "POST";
byte [] lbPostBuffer = System.Text.Encoding.GetEncoding(1252).GetBytes(lcPostData);
loHttp.ContentLength = lbPostBuffer.Length;
loHttp.Credentials = CredentialCache.DefaultCredentials;
//loHttp.SendChunked = true;
loHttp.ServicePoint.Expect100Continue = false;
Stream loPostData = loHttp.GetRequestStream();
loPostData.Write(lbPostBuffer, 0, lbPostBuffer.Length);
loPostData.Close();
HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
Encoding enc = System.Text.Encoding.GetEncoding(1252);
StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc);
string lcHtml = loResponseStream.ReadToEnd();
loWebResponse.Close();
loResponseStream.Close();