2011-01-03 15 views
1

.NET Frameworkを使用してRSSデータを使用するアプリケーションを作成しようとしています。 RSSサイトでは、ユーザー名とパスワードが必要です。 と、インターネットに接続するためにNTLM認証が必要な私の職場内からこのアプリケーションを実行しています。 ネットワークHttpWebRequestを使用した認証とWebサイトの認証

は私が407エラーを取得し、私は単にCredentialCache.DefaultNetworkCredentialsを使用する場合、私は401エラーを取得

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

を使用しようとしていますコードです。このコードが動作する場合

答えて

1

を使用して問題を解決しました。あなたは言い換えれば

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; 

を設定する必要があり、あなたはプロキシと先サーバーの資格情報を交換していました。

+0

はい、あなたは正しいです、私の間違い.. – rsapru

2

は、上記のあなたの元のコードが間違っていた、次のコード

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(); 
関連する問題