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

Sio*_*Sio 17 .net proxy httpclient .net-4.0

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

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

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

var client = new HttpClient(webRequestHandler);
client.PostAsync(RequestUri, MyContent);
Run Code Online (Sandbox Code Playgroud)

Sio*_*Sio 31

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

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
        <proxy usesystemdefault="True" />
    </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)

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


Jaa*_*ans 19

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

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)

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

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