【问题标题】:WebClient class doesn't exist in Windows 8Windows 8 中不存在 WebClient 类
【发布时间】:2015-03-13 04:23:32
【问题描述】:

我想使用 HTTP 网络服务,并且我已经为 wp7 开发了一个应用程序。

我使用 WebClient 类,但不能在 windows 8 上使用它(“错误:找不到类型或命名空间”)。

我还能用什么?

你能给我一个代码示例吗?

当命名空间不存在时,Microsoft 是否有网站可以提供帮助?

【问题讨论】:

  • “windows8”是指“WinRT”吗?它在面向常规 .NET 框架的 Windows 8 上应该可以正常工作。如果您的目标是 WinRT,那么确定:您需要使用 WinRT 提供的功能。
  • 1.它不是命名空间,而是一个类。 2. 是的,WinRT 中没有它,因为它鼓励进行同步调用的不良做法。改用 HttpWebRequest 类。
  • “是的,WinRT 中没有它,因为它鼓励进行同步调用的不良做法。”这当然不是 WebClient 在 WinRT 中不存在的原因,因为 WebClient 的大多数方法都有异步版本。 WinRT 中缺少它的原因可能是其他原因。

标签: c# webclient windows-8 windows-runtime visual-studio-2012


【解决方案1】:

选项 1:HttpClient 如果您不需要确定性进度通知,这就是您想要使用的。示例。

public async Task<string> MakeWebRequest()
{
       HttpClient http = new System.Net.Http.HttpClient();
       HttpResponseMessage response = await http.GetAsync("http://www.example.com");
       return await response.Content.ReadAsStringAsync();
}

选项 2:当您需要进度通知时,您可以使用 DownloadOperationBackgroundDownloader。 MSDN 上的这个sample 是一个好的开始。

选项 3:由于您提到了 Web 服务,如果它返回 XML,您可以使用 XmlDocument.LoadFromUriAsync,它将返回一个 XML 文档。示例

public async void DownloadXMLDocument()
{
      Uri uri = new Uri("http://example.com/sample.xml");
      XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(uri);
      //do something with the xmlDocument.
}

当您为 Metro .Net 框架开发时,与桌面版本相比会受到限制。如果您看到 namespace not found 错误,通常是由于这个事实。 MSDN 上的这个 link 有命名空间列表,可用于 Metro 的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2021-04-21
    相关资源
    最近更新 更多