我正在使用需要身份验证的代理,即,在浏览器中,如果我尝试打开页面,它会立即要求提供凭据。我在程序中提供了相同的凭据,但失败并出现 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)