我想知道什么是最快的方式来发出请求并获得字符串的响应? 我读到webclient基本上是httpwebrequest的帮助类。
我问的原因是,例如,我需要得到类似2000 url的响应。 并希望尽可能提高效率。
只需要知道httpwebrequest在C#中是否最快还是还有其他什么?
谢谢。
答案 0 :(得分:1)
如果你使用的是.net 4.5,你可以试试现代的http客户端,这是一个nuget包。它利用.Net 4.5+异步模式,可以非常有效地使用你的线程。
这段代码很天真,但是应该给你一些如何处理异步
的提示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);
}
Task.WaitAll(tasks.ToArray());
return tasks.Select(x => x.Result);
}
答案 1 :(得分:0)
对于使用哪种方法执行请求的性能非常重要,它等待服务器响应需要花费时间。
要执行多个请求,您可以使用WebClient
类中的异步方法。这样你就不必每次只等待一个回复。
选择您想要同时运行的合理数量的请求,并使用DownloadDataAsync
method启动它们。当响应到达时,将触发DownloadDataCompleted
事件(或等效项,具体取决于您使用的方法)。处理事件以获取下载的数据,并在完成所有操作之前启动另一个请求。
如果您要求来自同一域的网址,并行获取多个资源通常没有任何好处,如果您从不同的域请求它们,则可以并行运行更多资源。