将http请求发送到服务器,但不期望响应

问题描述 投票:5回答:7

我需要将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()命令,则会收到错误消息“连接意外关闭”

任何帮助将不胜感激。谢谢

c# http post request
7个回答
8
投票

如果您使用的是HTTP协议,则会有必须来进行响应。

但是,不需要很大的回应:

HTTP/1.1 200 OK
Date: insert date here
Content-Length: 0
\r\n

3
投票

请参阅this答案。

我认为您正在寻找的是“抛弃式”模式。


2
投票

HTTP要求响应,如Mike Caron所述。但是,作为快速(脏)修复,您可以捕获“连接意外关闭”错误,然后继续。


1
投票

如果服务器对此没有问题,则始终可以使用RAW套接字发送请求,然后将其关闭。


0
投票

如果您不想等待响应,可以在另一个线程中发送数据或简单使用WebClient.UploadStringAsync,但请注意,响应始终在请求后发生。使用另一个线程进行请求使您可以忽略响应处理。


0
投票

看看它可能有帮助。

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);

}


0
投票

HEAD方法仅用于询问有关文档的信息,而不用于询问文档本身。 HEAD比GET快得多,因为要传输的数据量要少得多。使用缓存的客户端经常使用它,以查看自上次访问该文档以来该文档是否已更改。如果不是,则可以重用本地副本,否则必须使用GET检索更新的版本。响应HEAD请求的HTTP标头中包含的元信息应与响应GET请求发送的信息相同。此方法可用于获取有关由请求URI标识的资源的元信息,而无需传输数据本身。此方法通常用于测试超文本链接的有效性,可访问性和最新修改。

请参见参考:https://condor.depaul.edu/dmumaugh/readings/handouts/SE435/HTTP/node14.html

© www.soinside.com 2019 - 2024. All rights reserved.