c# - C# : HTTP 407 error 中的代理基本身份验证

标签 c# proxy httpwebrequest basic-authentication http-status-code-407

我正在使用需要身份验证的代理,即在浏览器中,如果我尝试打开一个页面,它会立即要求提供凭据。我在我的程序中提供了相同的凭据,但它因 HTTP 407 错误而失败。

这是我的代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

IWebProxy proxy = WebRequest.GetSystemWebProxy();
CredentialCache cc = new CredentialCache();
NetworkCredential nc = new NetworkCredential();

nc.UserName = "userName";
nc.Password = "password";
nc.Domain = "mydomain";
cc.Add("http://20.154.23.100", 8888, "Basic", nc);
proxy.Credentials = cc;
//proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Proxy = proxy;
request.Proxy.Credentials = cc;
request.Credentials = cc;
request.PreAuthenticate = true;

我已经尝试了所有可能的方法,但似乎遗漏了什么。 是不是有点像,我必须提出两个请求?首先没有凭据,一旦我从服务器收到关于需要凭据的回复,请使用凭据发出相同的请求?

最佳答案

此方法可以避免硬编码或配置代理凭据的需要,这可能是可取的。

将其放入您的应用程序配置文件 - 可能是 app.config。 Visual Studio 会在构建时将其重命名为 yourappname.exe.config,并且最终会出现在您的可执行文件旁边。如果您没有应用程序配置文件,只需使用 Visual Studio 中的添加新项添加一个。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>
</configuration>

关于c# - C# : HTTP 407 error 中的代理基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603093/

相关文章:

javascript - 套接字挂断错误与nodejs

c# - HttpWebRequest 结果为 “The request was aborted: Could not create SSL/TLS secure channel” 并返回 code=AlgorithmMismatch

c# - 如何在 WPF 中保存全局应用程序变量?

node.js - WebSockets 和 Apache 代理 : how to configure mod_proxy_wstunnel?

c# - 在 C# VS2008 项目中使用 sqlite 的数据访问方法?

docker - Nginx反向代理:使用jwilder/nginx-proxy为gitlab容器设置正确的端口

java - 拦截传出的 servlet http 请求

django - 如何在没有表单的POST请求中发送url参数

c# - 文档窗口在 Visual Studio 中获得焦点时的事件

c# - 如何使用 QueryOver 返回通用列表