我需要将POST http请求发送到服务器,但不应期望响应。我应该使用哪种方法?
我一直在使用
WebRequest request2 = WebRequest.Create("http://local.ape-project.org:6969");
request2.Method = "POST";
String sendcmd = "[{\"cmd\":\"SEND\",\"chl\":3,\"params\":{\"msg\":\"Helloworld!\",\"pipe\":\"" + sub1 + "\"},\"sessid\":\"" + sub + "\"}]";
byte[] byteArray2 = Encoding.UTF8.GetBytes(sendcmd);
Stream dataStream2 = request2.GetRequestStream();
dataStream2.Write(byteArray2, 0, byteArray2.Length);
dataStream2.Close();
WebResponse response2 = request2.GetResponse();
发送请求并返回响应。如果请求将从服务器返回响应,则此方法很好。但是,对于我的需要,我只需要发送一个POST请求。而且,我发送的请求将没有任何响应。我该怎么办?
如果我使用request2.GetRespnse()命令,则会收到错误消息“连接意外关闭”
任何帮助将不胜感激。谢谢
如果您使用的是HTTP协议,则会有必须来进行响应。
但是,不需要很大的回应:
HTTP/1.1 200 OK
Date: insert date here
Content-Length: 0
\r\n
请参阅this答案。
我认为您正在寻找的是“抛弃式”模式。
HTTP要求响应,如Mike Caron所述。但是,作为快速(脏)修复,您可以捕获“连接意外关闭”错误,然后继续。
如果服务器对此没有问题,则始终可以使用RAW套接字发送请求,然后将其关闭。
如果您不想等待响应,可以在另一个线程中发送数据或简单使用WebClient.UploadStringAsync,但请注意,响应始终在请求后发生。使用另一个线程进行请求使您可以忽略响应处理。
看看它可能有帮助。
public static void SetRequest(string mXml)
{
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.CreateHttp("http://dork.com/service");
webRequest.Method = "POST";
webRequest.Headers["SOURCE"] = "WinApp";
// Decide your encoding here
//webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentType = "text/xml; charset=utf-8";
// You should setContentLength
byte[] content = System.Text.Encoding.UTF8.GetBytes(mXml);
webRequest.ContentLength = content.Length;
var reqStream = await webRequest.GetRequestStreamAsync();
reqStream.Write(content, 0, content.Length);
var res = await httpRequest(webRequest);
}
HEAD方法仅用于询问有关文档的信息,而不用于询问文档本身。 HEAD比GET快得多,因为要传输的数据量要少得多。使用缓存的客户端经常使用它,以查看自上次访问该文档以来该文档是否已更改。如果不是,则可以重用本地副本,否则必须使用GET检索更新的版本。响应HEAD请求的HTTP标头中包含的元信息应与响应GET请求发送的信息相同。此方法可用于获取有关由请求URI标识的资源的元信息,而无需传输数据本身。此方法通常用于测试超文本链接的有效性,可访问性和最新修改。
请参见参考:https://condor.depaul.edu/dmumaugh/readings/handouts/SE435/HTTP/node14.html