如何下载MetroStyle应用程序(WinRT)和C#中的网页

问题描述:

我正在创建一个MetroStyle应用程序,我想使用基于HTTP Get方法的网站API。比如登录我应该下载这个URL返回的XML:如何下载MetroStyle应用程序(WinRT)和C#中的网页

websitehost.com/api/login.php?u=username&p=password

的问题是,新的MetroStyle应用程序不会让我使用了许多我在多年使用方法.net,那么我怎样才能下载返回的XML文档并解析它?

+0

哇,这是一个不好的API。 –

+0

好吧,我简化了它,但它基本上是这样的。 –

+0

您不应该通过网址传递用户名和密码。 – McKay

你可能会寻找这样的:

public async Task<string> DownloadPageStringAsync(string url) 
    { 
     HttpClientHandler handler = new HttpClientHandler() 
     { UseDefaultCredentials = true, AllowAutoRedirect = true }; 

     HttpClient client = new HttpClient(handler); 
     HttpResponseMessage response = await client.GetAsync(url); 
     response.EnsureSuccessStatusCode(); 
     return await response.Content.ReadAsStringAsync(); 
    } 
+0

是的,这是我用过的代码,它能正常工作。我已经发布了这个地方,但我似乎无法找到链接。谢谢回复。由于我已经测试过了,我会将其设置为答案。 –

您可以使用Windows.Data.Xml.Dom.XmlDocument.LoadFromUriAsync(Uri)方法自动获取并解析XML,也可以手动使用Windows.Networking.BackgroundTransfer.DownloadOperation实例调用Web服务并获取数据,使用Windows.Data.Xml.Dom.XmlDocument.LoadXml(string)解析数据。

+0

您能否解释一下我如何使用'DownloadOperation'? –

+0

我很想看看如何下载XML文件以外的文件。 –

+0

没有太多的例子,但我可以冒险猜测你可以通过调用['BackgroundDownloader.StartDownloadAsync(Uri,IStorageFile)'](http://msdn.microsoft.com/zh-cn/library/default.aspx)来获得'DownloadOperation'的实例。 COM/EN-US /库/窗/应用/ windows.networking.backgroundtransfer.backgrounddownloader.startdownloadasync)。 –

您应该能够使用

var data = await (new System.Net.Http.HttpClient()).GetAsync(new Uri("http://wherever")); 

然后做任何你需要的数据,包括与XmlDocument的或的XElement或诸如此类的东西加载它。