2010-12-12 6 views
0

GrüßeC# - XML ​​lesen von https-Link + Popup Benutzername/pw Box

Ich versuche, eine XML-Datei von einer Website zu erhalten, die mich in einem Benutzername und API-Schlüssel zu füllen erfordert.

Beispiel:

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

Die API auf der Website zeigt, dass Sie nur diese Informationen benötigen .. aber es gibt immer ein 401, dass ich keinen Zugang habe. Jetzt bemerkte ich, dass wenn ich das in meinen Browser setzte, ich noch meinen Benutzernamen und mein Passwort eingeben musste. Wenn Sie die obige URL verwenden, wird ein Popup-Feld angezeigt, in dem Sie Ihren Benutzernamen/Ihr Passwort eingeben können.

Ich könnte immer Benutzer die Dateien selbst herunterladen, aber das wäre eine Art von Ärger. Ich frage mich, ob es einen alternativen Weg gibt oder ob ich das Popup-Fenster über C# ausfüllen kann.

Vielen Dank im Voraus.

+0

Sind die Benutzernamen/apiKey alphanumerisch? – Andreas

+0

Ich bin ziemlich sicher, dass beide ja sind, da der Benutzername davon abhängt, was der Benutzer ausfüllen wird :). Der API-Schlüssel ist definitiv und ich vermute, dass einige Benutzer einen Benutzernamen mit einer Nummer haben werden. – Citroenfris

Antwort

2

Sie können die Anmeldeinformationen über einen WebClient übergeben und damit die erforderliche XML-Datei vom Web Server laden.

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

    } 

Wenn der Benutzername Domäne Informationen enthält, gibt sie separat in dem überladenen Konstruktor von NetworkCredential(string userName, string password, string domain)

Hoffnung, das hilft!

+0

Das schien den Trick zu machen, vielen Dank! – Citroenfris