2010-12-12 68 views
0

問候C# - XML從HTTPS鏈接+彈出的用戶名/密碼箱

我想從一個網站,要求我填寫用戶名和API密鑰的XML文件中讀取。

例子:

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

網站上的API顯示,你只需要這些信息。但是它總是返回401,我沒有接。現在我注意到,當我將它放入瀏覽器時,我仍然需要填寫用戶名和密碼。使用上述URL時,會顯示一個彈出框,您可以在其中填寫用戶名/密碼。

我總是可以讓用戶自己下載這些文件,但那樣會很麻煩。所以我想知道是否有其他方法,或者我可以通過C#填充彈出框。

預先感謝您。

+0

是否是userName/apiKey字母數字? – Andreas 2010-12-12 18:43:52

+0

我很確定這兩個都是肯定的,因爲用戶名取決於用戶填寫的內容:)。 API密鑰絕對是,我猜一些用戶將擁有一個用戶名和數字。 – Citroenfris 2010-12-12 18:46:29

回答

2

您可以通過WebClient傳遞憑據並使用它從Web服務器加載所需的XML文件。

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

    } 

如果用戶名包含域信息,也分別通過它在重載的構造NetworkCredential(string userName, string password, string domain)

希望幫助的!

+0

這似乎是做的伎倆,非常感謝! – Citroenfris 2010-12-12 19:43:47