我有一个基于.NET 4构建的控制台应用程序,它使用HttpClient
库(通过NuGet获取)通过Internet从公共API检索数据。控制台应用程序位于代理后面。它所在的Windows机器在Internet Explorer中具有正确的代理设置。当控制台应用程序尝试访问外部世界时,它将获得407状态 - “需要代理身份验证”。
我还没有编写任何特定的代码来处理代理。我假设从407错误,应用程序指向代理没有问题,但代理不验证请求。
我的问题是,是否可以设置HttpClient使用登录用户的凭据来验证代理?如果是这样,怎么样?
var client = new HttpClient(webRequestHandler);
client.PostAsync(RequestUri, MyContent);
答案 0 :(得分:30)
我设法通过app.config中的代理配置非常简单地解决了我的问题。
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="True" />
</defaultProxy>
</system.net>
答案 1 :(得分:18)
如果您想以编程方式执行相同操作,可以使用以下命令:
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
(这些对象来自`System.Net'命名空间)。
来自MSDN的更多信息:http://msdn.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy.aspx