c# - 使用 HttpWebRequest 的网络身份验证和网站身份验证

标签 c# asp.net authentication httpwebrequest

我正在尝试创建一个将使用 .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 错误。

最佳答案

使用以下代码解决了问题

 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();

关于c# - 使用 HttpWebRequest 的网络身份验证和网站身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583052/

相关文章:

c# - 这是 MCTS 自定进度培训套件(考试 70-536)中的错误吗?

asp.net - 多行 ASP.NET 文本框的 Facebook 蓝色突出显示

asp.net - 在日志文件中 : s c sc cs? 是什么意思

mysql - 使用 Passport.js 和纯 SQL 查询进行身份验证

c# - 使用文件中的 html 启动默认浏览器,然后跳转到特定 anchor

c# - C# 混合系统的代理服务器

java - 通过 Jsoup 登录 Facebook

laravel 5.4 更改认证用户表名

c# - Prism/MEF : How can 2 windows' viewmodels talk to each other?

.net - ASP.NET MVC3 谷歌分析集成