HttpWebRequest一个代理而一个不代理

时间:2009-04-14 20:44:11

标签: c# httpwebrequest

我如何代理我的连接?我想要3个默认的HttpWebRequest objs,它们不会通过代理,另外3个会通过代理。我是做WebRequestObject.Proxy = myProxy;在对象上我想使用代理并且对3个objs什么都不做我不知道?此外,对象将以未知顺序初始化,因此我可能有2个不是,2个是代理,第3个是非,而最终是。它只是简单地写.Proxy = myProxy?

3 个答案:

答案 0 :(得分:10)

对于需要代理的请求,是的,这样可以正常工作:

request.Proxy = myProxy;

对于希望绕过代理的请求,请使用:

request.Proxy = System.Net.GlobalProxySelection.GetEmptyWebProxy;

如果您想使用IE的默认代理(或者如果您在app / web.config中设置了默认代理),只需不要设置代理,或将其设置为null:

request.Proxy = null;

有关possible HttpWebRequest.Proxy values hereGetEmptyWebProxy here的更多信息。

答案 1 :(得分:3)

现在不推荐使用System.Net.GlobalProxySelection.GetEmptyWebProxy。

我最终遇到了这种情况

    private static void SetProxy(HttpWebRequest request)
    {
        if (AppConstants.UseProxyCredentials)
        {
            //request.Proxy = available in System.Net configuration settings
            request.Proxy.Credentials = Credentials.GetProxyCredentials();
        }
        else
        {
            request.Proxy = null;
            //request.Proxy.Credentials = n/a
        }
    }

使用web.config中的代理详细信息:

<system.net>
  <defaultProxy>
    <proxy
      autoDetect="False"
      bypassonlocal="True"
      scriptLocation="http://www.proxyscript..."
      proxyaddress="http://proxyurl..." />
  </defaultProxy>
</system.net>
<system.web>

答案 2 :(得分:2)

是的,您将为要代理的请求上的每个属性创建一个新的代理对象,并将其留空以查找您已完成的代理。对于未设置的那些,他们将使用app.config中system.net配置中的默认代理值。