2010-12-12 52 views
0

SalutationsC# - XML ​​lire https lien + pop-up nom d'utilisateur/pw boîte

Je suis en train d'obtenir un fichier XML à partir d'un site Web qui me demande de remplir une clé de nom d'utilisateur et API.

Exemple:

public void GetTournaments(string userName, string apiKey, string tournamentName) 
{ 
string getXMLAdress = "https://" + userName + ":" + apiKey + "@challonge.com/api/tournaments/" + tournamentName + "/participants.xml"; 
XmlDocument tournamentsXML = new XmlDocument(); 
tournamentsXML.Load(getXMLAdress); 
} 

L'API sur le site montre que vous avez seulement besoin de ces informations .. mais il retourne toujours un 401 que je n'ai pas accès. Maintenant, j'ai remarqué que lorsque j'ai mis cela dans mon navigateur, je devais encore remplir mon nom d'utilisateur et mot de passe. Lorsque vous utilisez l'URL ci-dessus, il affiche une fenêtre contextuelle dans laquelle vous pouvez entrer votre nom d'utilisateur/mot de passe.

Je pourrais toujours laisser les utilisateurs télécharger les fichiers eux-mêmes, mais ce serait un peu compliqué. Donc je me demande s'il y a une alternative ou si je peux remplir la boîte popup en C#.

Merci d'avance.

+0

Le nom d'utilisateur/apiKey est-il alphanumérique? – Andreas

+0

Je suis assez certain que les deux sont oui puisque le nom d'utilisateur dépend de ce que l'utilisateur va remplir :). La clé API est définitivement et je suppose que certains utilisateurs auront aussi un nom d'utilisateur avec un numéro. – Citroenfris

Répondre

2

Vous pouvez transmettre les informations d'identification via un WebClient et l'utiliser pour charger le fichier XML requis à partir du serveur Web.

public static void GetFileWithCredentials(string userName, string password, string url) 
    { 

     using (WebClient wc = new WebClient()) 
     { 
      wc.Credentials = new NetworkCredential(userName, password); 
      string xml = wc.DownloadString(url); 

      XmlDocument tournamentsXML = new XmlDocument(); 
      tournamentsXML.LoadXml(xml); 
     } 

    } 

Si le nom contient des informations de domaine, ne passent séparément dans le constructeur surchargé de NetworkCredential(string userName, string password, string domain)

Hope that helps!

+0

Cela semblait faire l'affaire, merci beaucoup! – Citroenfris