将http请求发送到服务器而不期待响应

时间:2011-07-11 03:57:01

标签: c# http post request

我需要向服务器发送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()命令,我收到“连接意外关闭”的错误

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

7 个答案:

答案 0 :(得分:7)

如果您使用的是HTTP协议,则 作为回复。

然而,它不需要是一个非常大的回应:

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

答案 1 :(得分:3)

请参阅this回答。

我认为你所寻找的是火与忘记模式。

答案 2 :(得分:2)

HTTP需要响应,如Mike Caron已经提到的那样。但作为一个快速(脏)修复,你可以抓住“连接意外关闭”错误并继续。

答案 3 :(得分:1)

如果你的服务器没问题,你可以随时使用RAW套接字发送请求然后关闭它。

答案 4 :(得分:0)

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

答案 5 :(得分: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);

}

答案 6 :(得分:0)

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

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