2011-01-03 6 views
1

J'essaie de créer une application qui consommera des données RSS à l'aide de .NET Framework. Le site RSS nécessite un nom d'utilisateur et un mot de passe pour commencer. et suis en cours d'exécution de cette application à partir de mon lieu de travail qui nécessite l'authentification NTLM pour se connecter à Internet.Authentification réseau et site Web Authentification à l'aide de HttpWebRequest

Voici le code que je suis en train d'utiliser

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

je reçois 407 erreur et si j'utilise simplement CredentialCache.DefaultNetworkCredentials je reçois 401 erreur.

Répondre

1

Si ce code fonctionne, votre code d'origine ci-dessus était faux. Vous devez définir

request.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials; 

et

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; 

En d'autres termes, vous aviez échangé des informations d'identification pour le proxy et le serveur de destination.

+0

Oui, vous avez raison, Mon erreur .. – rsapru

2

a résolu le problème en utilisant le code suivant

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