0

如果您出于简单目的使用它,WebClient 就足够了。如果没有 Timeout,您可以继承它并轻松覆盖它的 GetWebRequest 方法:

protected override WebRequest GetWebRequest(Uri address)
{
    WebRequest request = base.GetWebRequest(address);
    request.Timeout = Timeout;
    return request;
}

如果使用多线程方式,则必须通过代码或 app.config 设置 MaxConnection: 提高 .NET 中多线程 HttpWebRequests 的性能

您也可以轻松地并行化它: Best practics for parallelize web crawler in .net 4.0

也许微软为 WebClient (HttpWebRequest) 的实现问题创建了新的 HttpClient 类

但它没有 Proxy,Gzip 支持。

对于 Web 客户端:

在多线程实现中设置超时仍然无用!

HttpWebRequest 的并发限制

所以问题:

我需要带有代理、超时(工作之一)、gzip 支持的 FastWebClient。我会将它与多个代理一起使用,所以我肯定需要多个 FastWebClient。

或助手:

FastWebHelper.DownloadString(字符串 url,WebProxy 代理,int 超时)

任何的想法 ?

4

1 回答 1

0

当然。WebClient.DownloadStringAsync 方法 您仍然需要为每个连接/请求创建 1 个 WebClient 实例,因为它不是无状态的。

于 2012-09-10T14:26:52.057 回答