使HttpClient使用app.config的默认代理

3

我正在尝试使用 HttpClient 与代理后面的api进行通信。但是因为代理只对当前环境有效,我不想把它硬编码。

目前我的做法如下:

public static HttpClient CreateClient()
{
  var cookies = new CookieContainer();
  var handler = new HttpClientHandler
  {
    CookieContainer = cookies,
    UseCookies = true,
    UseDefaultCredentials = false,
    UseProxy = true,
    Proxy = new WebProxy("proxy.dev",1234),
  };
  return new HttpClient(handler);
}

这是我想使用的内容:

<system.net> 
  <defaultProxy> 
    <proxy bypassonlocal="true" 
           usesystemdefault="false" 
           proxyaddress="http://proxy.dev:1234" /> 
  </defaultProxy>
</system.net>

有没有可能在应用程序/ web.config 中定义代理,并将其默认使用在我的HttpClient中?
谢谢您提供的任何想法。
1个回答

1
不要在应用程序中使用硬编码的设置,你可以使用 app.config 来管理设置,只需将你的设置添加到 appSettings 标签下即可。
  <appSettings>
    <add key="proxyaddress" value="proxy.dev:1234" /> 
  </appSettings>

在你的应用程序中读取该键。

public static HttpClient CreateClient()
{
  readonly static string[] proxyAddress = ConfigurationManager.AppSettings["proxyaddress"].Split(':');
  var cookies = new CookieContainer();
  var handler = new HttpClientHandler
  {
    CookieContainer = cookies,
    UseCookies = true,
    UseDefaultCredentials = false,
    UseProxy = true,
    Proxy = new WebProxy(proxyAddress[0],proxyAddress[1]),
  };
  return new HttpClient(handler);

}

4
我仍然重视原帖作者关于web.config defaultProxy的问题,HttpClient能使用这个设置吗? - JohnKoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接