Response에서 응답하는 서버에 .net 및 POST 데이터의 WebRequest 클래스를 사용하고 있습니다.WebRequest 문제, request-body 앞의 응답
wierd는 네트워크 트래픽을 분석하기 위해 피들러를 시작했을 때 작동하지만 피들러가 없으면 작동하지 않습니다.
그래서 WireShark를 사용하여 컴퓨터로 보내고받는 패키지를 분석하기 시작했습니다. 이 프로그램에서는 TCP 스트림을 따르는 것이 간단합니다. 그래서 피들러를 사용하면 올바른 Request-header/body가 보내지는 것을 볼 수 있으며 Response-header/body를 가져옵니다. 이상한 부분은 Request-Header가 보내지는 피들러를 사용하지 않을 때입니다. 그리고 나서 Response-header/body와 TCP-stream의 마지막에있는 request-body를 얻었습니다.
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();
아마도 도움이 될 것입니다. http://stackoverflow.com/questions/18126941/c-sharp-webrequest-post-and-getresponse – xameeramir