C# 通过Httpwebrequest向Web服务器发送请求时如何停止接收响应

C# 通过Httpwebrequest向Web服务器发送请求时如何停止接收响应,c#,web,httprequest,httpresponse,C#,Web,Httprequest,Httpresponse,我使用以下方式发送POST请求并获得响应: response = (HttpWebResponse)request.GetResponse(); 但是,我只想发送请求,我不在乎响应是什么。响应包大小可达500Kb~1Mb,浪费大量时间。如何发送请求,然后立即停止接收响应。非常感谢 我假设您正在向服务器发送GET请求。将其更改为HEAD请求 var request = System.Net.HttpWebRequest.Create("http://..."); request.Method =

我使用以下方式发送POST请求并获得响应:

response = (HttpWebResponse)request.GetResponse();

但是,我只想发送请求,我不在乎响应是什么。响应包大小可达500Kb~1Mb,浪费大量时间。如何发送请求,然后立即停止接收响应。非常感谢

我假设您正在向服务器发送GET请求。将其更改为HEAD请求

var request = System.Net.HttpWebRequest.Create("http://...");
request.Method = "HEAD";
request.GetResponse();

这将只返回内容的长度。有关更多信息,请参阅。

如果您唯一关心的是接收响应所需的时间,而不是所使用的带宽,则可以异步获得响应

给出的示例有点复杂,但总体思路是,在调用BeginGetResponse时,程序不会像调用GetResponse那样等待响应被下载。传递给BeginGetResponse的第一个方法是一个方法(称为“回调”)的名称,该方法将在响应最终完全下载时被调用。这是您将代码放在这里检查HTTP响应代码的地方,假设您关心这一点。第二个参数是传递给回调方法的“state”对象。我们会用这个来确保所有东西都被清理干净

它看起来像这样:

    private void YourMethod()
    {
        // Set up your request as usual.
        request.BeginGetResponse(DownloadComplete, request);

        // Code down here runs immediately, without waiting for the response to download
    }

    private static void DownloadComplete(IAsyncResult ar)
    {
        var request = (HttpWebRequest)ar.AsyncState;
        var response = request.EndGetResponse(ar);

        // You can check your response here to make sure everything worked.
    }

post请求是否也可以这样做?如果我不需要验证响应数据,我可以使用未使用的
DownloadComplete(IAsyncResult ar)
方法吗?我所拥有的可能是您希望使用的最小值。调用request.EndGetResponse(ar)可确保所有内容都得到正确清理。