我尝试获取Web请求的代理(HttpWebRequest或webclient)
在控制面板中 – >互联网选项 – >连接 – >局域网设置
你会看到3个选项:
>自动检测设置
>使用自动配置脚本
>为LAN使用代理服务器
我想确保无论采用哪种设置,我的网络请求都会选择与浏览器相同的代理.
我正在使用下面的代码来实现这一目标;但是,当检查1.,我在浏览器和我的代码中尝试相同的URL,它看起来我的代码要慢得多.我猜我在代码中获取代理的方式可能效率不高或不合适.
我的代码中有什么可以改变以反映浏览器的速度吗?
var client = (HttpWebRequest)WebRequest.Create(uriStr);
client.Headers["something"] = something;
client.Timeout = ConnectionTimeOut; //1 min
var proxyURI = WebRequest.GetSystemWebProxy().GetProxy(uri);
var proxy = new WebProxy(proxyURI, true)
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
//if there is no proxy, proxy will return the same uri
//do we need check if client.Proxy is null or not,
if (proxyURI != null && !string.IsNullOrEmpty(proxyURI.AbsoluteUri) && !proxy.Address.Equals(uri))
{
client.Proxy = proxy;
}
最佳答案 你的方法很好.
可能导致速度差异的原因是浏览器可能已缓存您请求的页面或缓存代理/代理凭据,并且不需要执行任何网络新提取,因为您在代码中执行.
获取代理/凭证后,您是否在申请中尝试了后续请求?