我想知道发出请求并将响应转换为字符串的最快方法是什么?我读到webclient基本上是httpwebrequest的助手类。
我问的原因是,例如,我需要从2000个网址得到回复。并希望尽可能提高效率。
只需要知道httpwebrequest是否是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,并行请求多个资源通常没有好处,如果你从不同的域请求它们,你可以并行运行更多的资源。