C# 将HttpClient与多个URL一起使用
我有一些URL(5000),我想通过HttpClient获得它们,我正在寻找一种方法尽快做到这一点 我从中找到了以下代码C# 将HttpClient与多个URL一起使用,c#,httpclient,C#,Httpclient,我有一些URL(5000),我想通过HttpClient获得它们,我正在寻找一种方法尽快做到这一点 我从中找到了以下代码 这个方法合适吗?有没有更快更好的方法?“合适吗?”它似乎在做它应该做的事情。“有没有更快的方法?”很难说——重要的问题是:对你来说足够快吗?“有更好的方法吗?”-完全取决于您对“更好”的定义。除了异步的次优使用之外,如果这在第一时间起作用,您确实意识到,您将一次启动5000个请求(几乎)?所以你基本上是在网络上泛滥。混合使用并行和异步不是一个好主意。也许你可以看看,也许你也可
这个方法合适吗?有没有更快更好的方法?“合适吗?”它似乎在做它应该做的事情。“有没有更快的方法?”很难说——重要的问题是:对你来说足够快吗?“有更好的方法吗?”-完全取决于您对“更好”的定义。除了异步的次优使用之外,如果这在第一时间起作用,您确实意识到,您将一次启动5000个请求(几乎)?所以你基本上是在网络上泛滥。混合使用并行和异步不是一个好主意。也许你可以看看,也许你也可以看看,事情并不是那么简单。因此,网站需要https标头、url上的参数(如id),并且可能需要不同的用户代理标头(浏览器类型)。
var client = new HttpClient();
//Start with a list of URLs
var urls = new string[]
{
"http://www.google.com",
"http://www.bing.com"
};
//Start requests for all of them
var requests = urls.Select
(
url => client.GetAsync(url)
).ToList();
//Wait for all the requests to finish
await Task.WhenAll(requests);
//Get the responses
var responses = requests.Select
(
task => task.Result
);
foreach (var r in responses)
{
// Extract the message body
var s = await r.Content.ReadAsStringAsync();
Console.WriteLine(s);
}