连接到 Web 服务 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
这些主题 说明了在 Windows 运行时应用中连接到 Web 服务的各种方法。 推荐的方法是使用 Windows.Web.Http.HttpClient,它是一种新的 Windows 运行时类,可供所有语言使用。 这是应用可用来访问 Web 服务的功能最完善且最强大的 API。
Windows.Web.Http 命名空间中的类可为现代 HTTP 客户端应用提供编程接口。Windows.Web.Http 命名空间和相关的 Windows.Web.Http.Headers 和 Windows.Web.Http.Filters 命名空间提供的 HTTP 客户端组件,允许用户通过 HTTP 使用现代的 Web 服务发出 HTTP 请求和接收 HTTP 响应。
对于基本的 HTTP 请求操作,Windows.Web.Http.HttpClient 有一个简单的接口来处理最常见的任务,并为身份验证 (AUTH) 提供了适用于大多数方案的合理的默认设置。对于较为复杂的 HTTP 操作,提供了更多的功能。
本部分中的主题还为名为 WinJS.xhr 的 XMLHttpRequest 讨论了一个 Windows JavaScript 库包装。通过 WinJS.xhr 可轻松在你的应用中访问 Web 内容。可以使用 WinJS.xhr 进行 HTTP 或 HTTPS 请求,以下载或上载任何格式的内容和文件。
与可以指定请求是否应该异步进行的 XMLHttpRequest 不同,WinJS.xhr 始终是异步的。WinJS.xhr 返回一个 WinJS.Promise,以便可以通过使用 then 或 done 方法处理已完成的请求、错误以及正在进行的请求。
警告 现在有可能使用 XMLHttpRequest 来传输特别大的对象,如 Blob 对象和 FormData 对象,这可能会花费很长时间才能完成。Windows.Web.Http.HttpClient 还可以用于发送和接收特别大的对象,如流。因为可能会随时终止应用,所以你应该考虑在 Windows.Networking.BackgroundTransfer 命名空间中为这些操作使用后台传输。有关上载和下载较大内容的详细信息,请参阅如何上载文件和在后台传输数据。
下表列出了可由用 JavaScript 编写的应用用来访问 Web 服务的 API。该平台指示了首次添加该功能的 Windows 版本。
API | 平台 | 评论 |
---|---|---|
Windows 8.1、Windows Phone 8.1、Windows Server 2012 R2 | 这是用来连接到 HTTP 服务器以发送和接收数据的推荐方法。 该功能还在用 JavaScript、C#、Visual Basic 和 C++ 编写的应用中受支持。 |
|
WinJS.xhr | Windows 8、Windows Phone 8.1、Windows Server 2012。 | 在 Windows 8 和 Windows Server 2012 中,当 XMLHttpRequest 不足时,这是推荐方法。 |
XMLHttpRequest | Windows 8、Windows Phone 8.1、Windows Server 2012 | 在大多数现代 Web 浏览器上的 JavaScript 实现中,该对象和 API 是可用的。 |
开发人员受众
对创建连接到 Web 服务并且使用 JavaScript 和 HTML 开发的应用感兴趣的开发人员
本主题中的信息使用与采用 JavaScript 和 HTML 编写的应用。
有关以 C++/XAML 编写的应用和以 C# 或 Visual Basic 编写的使用 .NET Framework 4.5 的应用如何连接到 Web 服务的更多信息,请参阅连接到 Web 服务 (XAML)。
本部分内容
主题 | 描述 |
---|---|
使用 Windows.Web.Http 命名空间中的 Windows.Web.Http.HttpClient 类向 Web 服务发送 GET 请求并检索响应。 |
|
通过 "ms-https-connections-only" meta 元素值,你可以防止应用使用 HTTP 连接进行导航或其他非媒体 Web 内容检索。当你将此 meta 元素的 content 属性设置为 "true" 时,HTTP 导航和非媒体 Web 内容检索将失败。 |
|
通过 WinJS.xhr 可轻松在你的应用中下载 Web 内容。本主题介绍如何使用 WinJS.xhr 下载文件,处理任何错误以及报告下载的进度。它还介绍了如何下载不同类型的内容。 |
|
使用 WinJS.xhr(它将 XMLHttpRequest 包起来)时,可以上载和下载二进制数据。此示例展示如何从你的图片上载位图。用于打开位图文件的 Windows 运行时方法会返回一个 IRandomAccessStream,因此你必须使用 MSApp.createBlobFromRandomAccessStream 将其转换为 Blob。 警告 你现在可以使用 XMLHttpRequest 上载或下载超过几 MB 的对象,如 Blob 对象和 FormData 对象,这可能会需要很长时间才能完成。因为可能会随时终止应用,所以你应该考虑为这些操作使用 Windows 运行时后台传输 API。有关上载和下载内容的详细信息,请参阅如何上载文件和如何下载文件。有关后台传输的一般讨论,请参阅 Transferring data in the background。 |
|
通过使用 WinJS.xhr 请求 Web 资源时,可能会缓存响应,这意味着之后的请求将返回客户端计算上已存在的资源版本,而不是重新发送请求。但是,可以添加确保即使已经缓存也会再次发送请求的 HTTP 标头。 |
|
使用 XMLHttpRequest 时,可以直接设置超时值,但使用 Windows.Web.Http.HttpClient 或 WinJS.xhr 时无法这样做。但也有在 WinJS.Promise 对象上设置超时的方法。如果在指定的时间内未完成请求,则可通过调用 WinJS.Promise.timeout 确保取消该请求。 |
|
混合 Web 应用程序是一种使用来自两个或更多数据源的数据创造出全新事物的 Web 应用程序。这一示例演示了如何使用 XMLHttpRequest (XHR) 来检索和显示远程真正简单的整合 (RSS) 源。 |
相关主题
其他资源
参考
示例
使用 Blob 保存和加载内容示例
XHR,用于处理导航错误,以及方案示例