WebProxy错误:需要代理身份验证

Ole*_*tov 13 .net c# webclient webproxy networkcredentials

我使用以下代码从互联网获取html数据:

WebProxy p = new WebProxy("localproxyIP:8080", true);
p.Credentials = new NetworkCredential("domain\\user", "password");
WebRequest.DefaultWebProxy = p;
WebClient client = new WebClient();
string downloadString = client.DownloadString("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

但出现以下错误:"需要代理身份验证".我无法使用默认代理,因为我的代码是在没有默认代理设置的特殊帐户下从Windows服务运行的.所以,我想在我的代码中指定所有代理设置.请告诉我如何解决此错误.

Joh*_*son 48

这对我有用:

IWebProxy defaultWebProxy = WebRequest.DefaultWebProxy;
defaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
client = new WebClient
    {
        Proxy = defaultWebProxy
    };
string downloadString = client.DownloadString(...);
Run Code Online (Sandbox Code Playgroud)

  • 精彩!这应该是每个WebClient示例的一部分. (5认同)

2GD*_*Dev 20

你要设置WebClient.Proxy属性..

WebProxy p = new WebProxy("localproxyIP:8080", true);
p.Credentials = new NetworkCredential("domain\\user", "password");
WebRequest.DefaultWebProxy = p;
WebClient client = new WebClient();
**client.Proxy = p;**
string downloadString = client.DownloadString("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

  • 实际上`DownloadString`方法在内部使用`WebRequest.Create()`创建的`WebRequest`对象.如果代理没有特别设置为`WebClient`对象,那么`WebRequest`对象使用从`WebRequest.InternalDefaultWebProxy`属性获得的代理,该属性只是由`WebRequest.DefaultWebProxy = p`语句设置; (2认同)