C#提出请求的最快方式&;读取响应

本文关键字:amp 读取 响应 方式 请求 | 更新日期: 2023-09-27 18:26:41

我想知道发出请求并将响应转换为字符串的最快方法是什么?我读到webclient基本上是httpwebrequest的助手类。

我问的原因是,例如,我需要从2000个网址得到回复。并希望尽可能提高效率。

只需要知道httpwebrequest是否是C#中速度最快的,或者还有其他什么吗?

谢谢。

C#提出请求的最快方式&;读取响应

如果您使用的是.net 4.5,您可以尝试现代http客户端,它是一个nuget包。它使用了.Net 4.5+异步模式,可以非常有效地使用线程。

这段代码很幼稚,但应该会提示您如何使用异步

⚠️更新2022-如果你要经常使用http客户端,你可能应该使用HttpClientFactory,而不是创建HttpClient实例

public async Task<IEnumerable<HttpResponseMessage>> GetStuffs(IEnumerable<string> uris)
{
    var tasks = new List<Task<HttpResponseMessage>>();
    var client = new HttpClient();
    foreach (var uri in uris)
    {
        var task = client.GetAsync(uri);
        tasks.Add(task);
    }
    await Task.WhenAll(tasks.ToArray());
    return tasks.Select(x => x.Result);
}

使用哪种方法处理请求对性能影响很小,等待服务器响应需要时间。

要执行多个请求,可以使用WebClient类中的异步方法。这样一来,您就不必一次只等待一个响应。

选择要同时运行的合理数量的请求,并使用例如DownloadDataAsync方法来启动它们。当响应到达时,会触发DownloadDataCompleted事件(或等效事件,具体取决于您使用的方法)。处理事件以获取下载的数据,并启动另一个请求,直到您完成所有请求。

如果你从同一个域请求URL,并行请求多个资源通常没有好处,如果你从不同的域请求它们,你可以并行运行更多的资源。