如果您将其用于简单目的,WebClient就足够了。没有超时你可以继承它并轻松覆盖它的GetWebRequest方法:
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
request.Timeout = Timeout;
return request;
}
如果您使用多线程方式,则必须按代码或app.config设置MaxConnection:Improving performance of multithreaded HttpWebRequests in .NET
您也可以轻松并行化: Best practics for parallelize web crawler in .net 4.0
也许Microsoft为WebClient(HttpWebRequest)的实现问题创建了新的HttpClient类
但它没有Proxy,Gzip的支持。
对于WebClient:
在多线程实现中设置超时仍然无用!
Concurrency Limit on HttpWebRequest
所以问题是:
我需要具有代理的FastWebClient,超时(工作一个),gzip支持。我将使用它与多个代理,所以我定义需要多个FastWebClient。
或帮助者:
FastWebHelper.DownloadString(字符串url,WebProxy代理,int超时)
有什么想法吗?
答案 0 :(得分:0)
不确定。 WebClient.DownloadStringAsync Method 您仍然需要为每个连接/请求创建1个WebClient实例,因为它不是无状态的。