本帖最后由 菩提树 于 2013-9-16 21:48 编辑
最近,因工作需要,需要用到httphelper,但是,有个奇怪的问题,就是,第一次链接网站时,速度很慢,大概需要10-20秒。接下来就很快了。在网上搜索,得到提示是: WebClient 默认代理是开启的,而我并没有设置!故只有等待超时后才会绕过代理,这样就导致阻塞了. 那么,我就试着在httphelper中把代理服务ip,用户名和密码都设置成null,结果发现没效果。后来,我想着能否改一下httphelper来实现呢。应该实验,修改源码的方法是可行的,现将方法汇报如下:
private void SetProxy(HttpItem item)
{
if (!string.IsNullOrEmpty(item.ProxyIp))
{
//设置代理服务器
if (item.ProxyIp.Contains(":"))
{
string[] plist = item.ProxyIp.Split(':');
WebProxy myProxy = new WebProxy(plist[0].Trim(), Convert.ToInt32(plist[1].Trim()));
//建议连接
myProxy.Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd);
//给当前请求对象
request.Proxy = myProxy;
}
else
{
WebProxy myProxy = new WebProxy(item.ProxyIp, false);
//建议连接
myProxy.Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd);
//给当前请求对象
request.Proxy = myProxy;
}
//设置安全凭证
request.Credentials = CredentialCache.DefaultNetworkCredentials;
}
//黑色部分是修改的代码 else
{
request.proxy=null;
}
} |