Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将HttpClient与多个URL一起使用_C#_Httpclient - Fatal编程技术网

C# 将HttpClient与多个URL一起使用

C# 将HttpClient与多个URL一起使用,c#,httpclient,C#,Httpclient,我有一些URL(5000),我想通过HttpClient获得它们,我正在寻找一种方法尽快做到这一点 我从中找到了以下代码 这个方法合适吗?有没有更快更好的方法?“合适吗?”它似乎在做它应该做的事情。“有没有更快的方法?”很难说——重要的问题是:对你来说足够快吗?“有更好的方法吗?”-完全取决于您对“更好”的定义。除了异步的次优使用之外,如果这在第一时间起作用,您确实意识到,您将一次启动5000个请求(几乎)?所以你基本上是在网络上泛滥。混合使用并行和异步不是一个好主意。也许你可以看看,也许你也可

我有一些URL(5000),我想通过HttpClient获得它们,我正在寻找一种方法尽快做到这一点

我从中找到了以下代码


这个方法合适吗?有没有更快更好的方法?

“合适吗?”它似乎在做它应该做的事情。“有没有更快的方法?”很难说——重要的问题是:对你来说足够快吗?“有更好的方法吗?”-完全取决于您对“更好”的定义。除了异步的次优使用之外,如果这在第一时间起作用,您确实意识到,您将一次启动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);
}