Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向服务器发送http请求而不需要响应_C#_Http_Post_Request - Fatal编程技术网

C# 向服务器发送http请求而不需要响应

C# 向服务器发送http请求而不需要响应,c#,http,post,request,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\":\""

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


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

如果您使用的是HTTP协议,必须有响应

但是,这不一定是一个很大的回应:

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


我认为,您正在寻找的是Fire and Forget模式。

正如Mike Caron所提到的,HTTP需要响应。但作为一个快速(脏)修复,您可以捕获“意外关闭的连接”错误并继续。

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

如果您不想等待响应,可以在另一个线程中发送数据或简单使用
,但请注意,响应总是在请求之后进行。使用另一个线程进行请求允许您忽略响应处理。

看看这个,它可能会有所帮助

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

}

您好,有没有一种方法可以让我只发送请求而根本得不到响应。在我的例子中,GetResponse()方法发送一个请求并等待响应。我不要第二部分。我只需要发送请求。阅读我的答案。HTTP需要一个响应。时期若你们不想要它,不要使用HTTP,实现你们自己的协议。@MikeCaron所以服务器必须发送响应,OP不必在意。