如何在使用HttpClient类时对代理进行身份验证?

时间:2012-03-22 18:04:28

标签: .net .net-4.0 proxy httpclient

我有一个基于.NET 4构建的控制台应用程序,它使用HttpClient库(通过NuGet获取)通过Internet从公共API检索数据。控制台应用程序位于代理后面。它所在的Windows机器在Internet Explorer中具有正确的代理设置。当控制台应用程序尝试访问外部世界时,它将获得407状态 - “需要代理身份验证”。

我还没有编写任何特定的代码来处理代理。我假设从407错误,应用程序指向代理没有问题,但代理不验证请求。

我的问题是,是否可以设置HttpClient使用登录用户的凭据来验证代理?如果是这样,怎么样?

var client = new HttpClient(webRequestHandler);
client.PostAsync(RequestUri, MyContent);

2 个答案:

答案 0 :(得分:30)

我设法通过app.config中的代理配置非常简单地解决了我的问题。

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
        <proxy usesystemdefault="True" />
    </defaultProxy>
</system.net>

http://msdn.microsoft.com/en-us/library/dkwyc043.aspx

答案 1 :(得分:18)

如果您想以编程方式执行相同操作,可以使用以下命令:

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;

(这些对象来自`System.Net'命名空间)。

来自MSDN的更多信息:http://msdn.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy.aspx