我在.NET 3.5中使用此代码并收到错误"远程服务器返回错误:(407)需要代理验证."
using (WebClient client = new WebClient())
{
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
try
{
string webPageStr = client.DownloadString(URL);
Console.WriteLine("OK");
}
catch (Exception ex)
{
Console.WriteLine("FAIL");
Console.WriteLine(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码可以在.NET 4.0中顺利运行,因为此行足以传递代理身份验证,而不适用于.NET 3.5.
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)
因此,我尝试了许多其他方法来解决这个问题,但没有一个工作:
1)用.替换CredentialCache.DefaultCredentials行
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user, password, domain);
Run Code Online (Sandbox Code Playgroud)
2)创建新的代理对象
IWebProxy proxy = new WebProxy(proxyUrl, port);
proxy.Credentials = new NetworkCredential(user, pass, domain);
client.Proxy = proxy;
client.Credentials = new NetworkCredential(user, pass, domain);
Run Code Online (Sandbox Code Playgroud)
3)添加此行
client.UseDefaultCredentials = true;
Run Code Online (Sandbox Code Playgroud)
4)使用HttpWebRequest而不是WebClient并重复上面的每个过程.这是示例代码.
HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = …Run Code Online (Sandbox Code Playgroud)