【问题标题】:network Authentication and website Authentication using HttpWebRequest使用 HttpWebRequest 进行网络身份验证和网站身份验证
【发布时间】:2011-01-03 08:35:24
【问题描述】:

我正在尝试创建一个使用 .NET Framework 来使用 RSS 数据的应用程序。 RSS 站点需要用户名和密码才能开始。 并且我在我的工作场所运行此应用程序,需要 NTLM 身份验证才能连接到互联网。

以下是我尝试使用的代码

NetworkCredential nc = new NetworkCredential("SITEUSERNAME", "SITEPASSWORD");
CredentialCache cache = new CredentialCache();
cache.Add(new Uri(RSSFeed), "Basic", nc);
cache.Add(new Uri(RSSFeed), "Ntlm", new NetworkCredential("USERNAME","PASSWORD","DOAMIN"));
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(RSSFeed);
myHttpWebRequest.Proxy.Credentials = cache;
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

我得到 407 错误,如果我只是使用 CredentialCache.DefaultNetworkCredentials 我得到 401 错误。

【问题讨论】:

    标签: c# asp.net authentication httpwebrequest


    【解决方案1】:

    使用以下代码解决了这个问题

     string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("UserName" + ":" + "Password"));
     StringBuilder outputData = new StringBuilder();
     HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(RSSFeed);
     myHttpWebRequest.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
     myHttpWebRequest.Headers.Add("Authorization", "Basic " + credentials);
     HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
     Stream streamResponse = myHttpWebResponse.GetResponseStream();
    

    【讨论】:

      【解决方案2】:

      如果此代码有效,那么您上面的原始代码是错误的。你应该设置

      request.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
      

      NetworkCredential nc = new NetworkCredential("SITEUSERNAME", "SITEPASSWORD");
      CredentialCache cache = new CredentialCache();
      cache.Add(new Uri(RSSFeed), "Basic", nc);
      cache.Add(new Uri(RSSFeed), "Ntlm", new NetworkCredential("USERNAME","PASSWORD","DOAMIN"));
      HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(RSSFeed);
      myHttpWebRequest.Credentials = cache;
      

      换句话说,您已经交换了代理和目标服务器的凭据。

      【讨论】:

        猜你喜欢
        • 2010-11-13
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多