关于HttpWebRequest的问题,困扰我几个月了 我用HttpWebRequest访问网页,设置了代理,如果代理不可用的话,会卡20秒才返回.
即使设置以下两个方法分别为1秒,照样还是20秒才返回,
httpWebRequest.Timeout和httpWebRequest.ReadWriteTimeout两个方法;
有点浪费时间,困扰很久了,一设置代理,这两个方法直接就失效了,
另外异步不行的,不能设置Keep-Alive.
不知道各路大侠有没有什么方法能解决此问题的,实在不行推荐款其他插件也行啊,
谢谢各位大大. ------解决方案-------------------- request.Proxy = null; //Skip auto proxy detect ------解决方案-------------------- namespace System.Net.Http
{
// Summary:
// Provides a base class for sending HTTP requests and receiving HTTP responses
// from a resource identified by a URI.
public class HttpClient ------解决方案-------------------- 代理的不稳定性是很难预判的,至少我还没有找到很好的办法,往往尝试连接代理服务器会花费很长的时间.
如果是想快速响应,并跳过无效代理,可以使用线程,通过ManualResetEvent的Wait方法阻塞等待,判断超时.如果超时,可以切换别的代理.当然,这个等待超时时间可以包括连接+等待回复的时间.
我的处理方式是建立一个大的代理服务器地址列表, 给每个代理服务器地址分配一个权重. 每次取随机数*权重,排序,用值最大的代理服务器地址.
权重的初始值是一样的, 再通过成功连接数,失败连接数,平均连接花费时间等,动态调整权重. ------解决方案--------------------