2011-01-03 2 views
1

Я пытаюсь создать приложение, которое будет потреблять RSS-данные с использованием .NET Framework. На сайте RSS требуется имя пользователя и пароль для начала. и я запускаю это приложение из своего рабочего места, для которого требуется аутентификация NTLM для подключения к Интернету.Аутентификация сети и веб-сайт Аутентификация с использованием HttpWebRequest

Ниже приведен код, который я пытаюсь использовать

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 ошибку.

ответ

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(); 
Смежные вопросы