C# - 从https链接+弹出用户名/密码框中读取的XML

时间:2010-12-12 18:22:11

标签: c# xml https

问候

我正在尝试从网站上获取xml文件,要求我填写用户名和API密钥。

示例:

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#填写弹出框。

提前谢谢。

1 个答案:

答案 0 :(得分: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);
        }

    }

如果userName包含域信息,请在重载的NetworkCredential(string userName, string password, string domain)

构造函数中单独传递它

希望有所帮助!