【问题标题】:How to download a webpage in MetroStyle app (WinRT) and C#如何在 MetroStyle 应用 (WinRT) 和 C# 中下载网页
【发布时间】:2013-08-29 17:30:59
【问题描述】:

我正在创建一个 MetroStyle 应用,并且我想使用基于 HTTP Get 方法的网站 API。例如登录我应该下载这个 URL 返回的 XML:

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

问题是新的 MetroStyle 应用程序不允许我使用我多年来在 .Net 中使用的许多方法,那么如何下载返回的 XML 文档并对其进行解析?

【问题讨论】:

  • 好吧,我已经简化了它,但基本上是这样的。
  • 您不应该通过 url 传递用户名和密码。

标签: c# .net windows-runtime microsoft-metro


【解决方案1】:

你可能正在搜索这个:

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

【讨论】:

  • 是的,这是我使用的代码,它工作正常。我已经在其他地方发布了这个,但我似乎找不到链接。谢谢回复。由于我已经对此进行了测试,因此我将其设置为答案。
【解决方案2】:

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

【讨论】:

  • 您能解释一下我如何使用DownloadOperation吗?
  • 我有兴趣了解如何下载 XML 文件以外的文件。
  • 示例并不多,但我可以大胆猜测,您可以通过调用BackgroundDownloader.StartDownloadAsync(Uri, IStorageFile) 获得DownloadOperation 的实例。
  • 是否有任何解决方案可以将页面下载到string 而不是IStorageFile
  • 我真的不知道。我仍然熟悉 WinRT 和 Metro API。
【解决方案3】:

你应该可以使用

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

然后对数据做任何你需要的事情,包括用 XmlDocument 或 XElement 或诸如此类的加载它。

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2023-03-23
    • 2015-10-08
    • 1970-01-01
    相关资源
    最近更新 更多