【问题标题】:how to add proxy authentication details to webclient object如何将代理身份验证详细信息添加到 webclient 对象
【发布时间】:2023-03-21 01:28:01
【问题描述】:

我有一些代码抛出 407 未经授权的异常。

我正在尝试下载一个文件,下面是我的示例代码。我尝试过使用 netcredentials 和 webproxy,但徒劳无功。

WebClient webClient = new WebClient();
NetworkCredential netCred=new NetworkCredential();
netCred.UserName="<<userid>>";
netCred.Password="<<password>>";
netCred.Domain="<<windowsdomainname>>";
webClient.Credentials = netCred;
WebProxy wp = new WebProxy();
wp.Credentials = netCred;
wp.Address = new Uri(@"http://proxy-xx.xxxx.co.uk:8080/proxy.pac");
webClient.Proxy = wp;
webClient.DownloadFile("http://www.win-rar.com/postdownload.html?&L=0", @"c:\winrar.exe");

【问题讨论】:

  • 你为什么使用代理而不是直接下载。
  • @Furqan 非常感谢您的回复。我尝试使用 NetworkCredentials,但无法添加 WebProxy。这是一个桌面应用程序。因为我使用的是公司网络,所以它会要求我进行代理身份验证。我想避免这种情况。因此想向我的 webclient 对象添加凭据。
  • 好的,然后删除webClient.Credentials = netCred;这一行,然后重试。
  • 再次感谢!不幸的是,同样的错误仍然存​​在。 407 - 需要身份验证。
  • 您确定您的代理需要身份验证,并且文件所在的 Web 服务器没有询问此问题。

标签: c# proxy webclient-download


【解决方案1】:

在找到您的问题之前,我收到了 407。将您的源代码修改为以下内容,这对我有用:

try
{
    var netCred = new NetworkCredential { UserName = "ununun", Password = @"pwpwpw", Domain = @"domain" };
    var webProxy = new WebProxy { Credentials = netCred };
    var webClient = new WebClient { Proxy = webProxy };
    webClient.DownloadFile(url, saveFileName);
}
catch (Exception ex)
{
    Console.WriteLine("Exception:\n{0}\n{1}", ex.Message, ex.StackTrace);
    return;
}

【讨论】:

    【解决方案2】:

    这是我昨天做的。

    WebClient client = new WebClient();
    ICredentials cred;
    cred = new NetworkCredential(user, password);
    client.Proxy = new WebProxy("xxxx-proxy", true, null, cred);
    

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多