为什么我使用以下命令以及类似的一些其他代码无法发送POST请求。而当我使用Mozilla浏览器的RESTClient发送相同的请求时,它可以正常工作。这仅适用于部署在本地局域网甚至我的本地机器上的服务器模拟器。对于实际的服务器,它可以正常工作。
ASCIIEncoding encoding = new ASCIIEncoding();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.220.12:5000"); // this is my system's local ip
byte[] byteArray = encoding.GetBytes("hello");
request.Method = "POST";
request.ContentType = "text/xml";// i tried it with "application/x-www-form-urlencoded" as well
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Flush();
dataStream.Close();
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
Console.ReadKey();
reader.Close();
dataStream.Close();
response.Close();
在服务器上进行测试时,我看到有一条成功接收请求的消息,但它没有显示来自上面代码的数据,而是显示了来自RESTclient的数据。
可能的原因是什么?是否有防火墙不允许从.net库向模拟器发送postdata?
这是未格式化的xml的相同响应,我没有看到xml有任何问题(与我通过RESTclient发送的副本相同)。