4

我尝试获取 Web 请求的代理(HttpWebRequest 或 webclient) 在控制面板-> Internet 选项-> 连接-> LAN 设置中,您将看到 3 个选项:

  1. 自动检测设置
  2. 使用自动配置脚本
  3. 为您的 LAN 使用代理服务器

我想确保无论哪种设置,我的 Web 请求都使用与浏览器相同的代理。

我正在使用下面的代码来实现这一点;但是,当检查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;
    }
4

1 回答 1

2

你的方法很好。

可能导致速度差异的原因是浏览器可能已经缓存了您请求的页面或缓存了代理/代理凭据,并且在您在代码中执行时不需要执行任何新的获取。

获取代理/凭据后,您是否尝试过应用程序中的后续请求?

于 2011-12-15T15:55:58.997 回答