我正在尝试使用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>
是否有可能在app / web.config中定义代理并在每个默认值的HttpClient中使用它?
感谢您的任何想法。
答案 0 :(得分: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);
}