Windows.Web.Http 命名空间
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 UWP 应用提供新式 HTTP 客户端 API。
类
HttpBufferContent |
提供使用缓冲区的 HTTP 内容。 |
HttpClient |
发送 HTTP 请求,并从 URI 标识的资源接收 HTTP 响应。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
HttpCookie |
提供一组用于管理 HTTP Cookie 的属性和方法。 |
HttpCookieCollection |
为 HttpCookie 类的实例提供集合容器。 |
HttpCookieManager |
添加或删除 HttpCookie ,或查看与应用关联的 Cookie。 |
HttpFormUrlEncodedContent |
提供使用 application/x-www-form-urlencoded MIME 类型编码的名称/值数据的 HTTP 内容。 |
HttpGetBufferResult |
将最终缓冲区结果与以下内容组合在一起:原始 HTTP 请求、生成的 HTTP 响应 ((如果有任何) )、扩展的错误值和成功的指示。 |
HttpGetInputStreamResult |
合并最终输入流结果以及以下内容:原始 HTTP 请求、生成的 HTTP 响应 ((如果有任何) )、扩展的错误值和成功的指示。 |
HttpGetStringResult |
将最终字符串结果与以下内容组合在一起:原始 HTTP 请求、生成的 HTTP 响应 ((如果有任何) )、扩展的错误值和成功的指示。 |
HttpMethod |
检索标准 HTTP 方法(如 GET 和 POST),并创建新的 HTTP 方法。 |
HttpMultipartContent |
提供使用 multipart/* MIME 类型的 HTTP 内容。 |
HttpMultipartFormDataContent |
提供使用 多部分/表单数据 MIME 类型的 HTTP 内容。 |
HttpRequestMessage |
表示包含标头的 HTTP 请求消息。 |
HttpRequestResult |
将原始 HTTP 请求与以下内容组合在一起:生成的 HTTP 响应 ((如果有任何) ),扩展错误值和成功指示。 |
HttpResponseMessage |
表示 HTTP 响应消息,包括标头、状态代码和数据。 |
HttpStreamContent |
提供使用流的 HTTP 内容。 |
HttpStringContent |
提供使用字符串的 HTTP 内容。 |
HttpTransportInformation |
提供有关 HTTP 连接使用的基础传输的信息。 |
结构
HttpProgress |
包含有关 HttpClient 操作进度的状态信息。 |
接口
IHttpContent |
为 HTTP 实体正文和内容标头提供基接口。 |
枚举
HttpCompletionOption |
指示在读取所有响应时还是仅读取标头时将异步 HttpClient 操作视为已完成。 |
HttpProgressStage |
指示 HTTP 连接进度中的步骤。 |
HttpResponseMessageSource |
指示 在 HttpResponseMessage 中接收的数据源。 |
HttpStatusCode |
包含响应 HTTP 请求时为 HTTP 定义的状态代码值。 |
HttpVersion |
表示 HTTP 协议版本。 |
示例
下面的示例代码演示如何以字符串的形式从 HTTP 服务器获取内容。
using System;
using Windows.Foundation;
using Windows.Web.Http;
// Note: the URI constructor will throw an exception
// if the string passed is not a valid URI
var uri = new Uri("http://example.com/datalist.aspx");
var httpClient = new HttpClient();
// Always catch network exceptions for async methods
try
{
var result = await httpClient.GetStringAsync(uri);
}
catch (Exception ex)
{
// Details in ex.Message and ex.HResult.
}
// Once your app is done using the HttpClient object call dispose to
// free up system resources (the underlying socket and memory used for the object)
httpclient.Dispose();
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.Web.Http.h"
using namespace winrt;
Windows::Foundation::IAsyncAction HttpClientExample()
{
Windows::Foundation::Uri uri{ L"http://www.bing.com" };
Windows::Web::Http::HttpClient httpClient{};
// Always catch network exceptions for async methods.
try
{
auto response{ co_await httpClient.GetStringAsync(uri) };
}
catch (winrt::hresult_error const& ex)
{
// Details in ex.message() and ex.to_abi().
}
// The destructor of HttpClient frees system resources
// (the underlying socket, and memory used for the object).
}
using namespace Windows::Foundation;
using namespace Windows::Web::Http;
// Note: the URI constructor will throw an exception
// if the string passed is not a valid URI
uri = ref new Uri("http://example.com/datalist.aspx");
httpClient = ref new HttpClient();
// Always catch network exceptions for async methods
try
{
httpClient->GetStringAsync(uri);
}
catch (Exception ^ ex)
{
// Details in ex.Message and ex.HResult.
}
// In C++/CX, the system resources used by httpClient object are released
// when the object falls out of scope or by the destructor (delete operator).
注解
Windows.Web.Http 命名空间以及相关的 Windows.Web.Http.Headers 和 Windows.Web.Http.Filters 命名空间为面向 HTTP 和 REST 服务的 UWP 应用提供编程接口。 此新 HTTP API 的此功能设计为符合 IETF RFC 2616 中定义的 HTTP。 新的 HTTP API 为开发人员提供 JavaScript、C#、VB.NET 和 C++ 中的一致支持。
此新 API 将三个不同 API 的使用替换为 Windows 8 中每种语言投影之前所需的不同功能。
- 适用于 JavaScript 的 WinJS.xhr
- 适用于 C# 和 VB 的 System.Net.Http 命名空间中的 HttpClient。
- 适用于 C++ 的 IXMLHTTPRequest2
Windows.Web.Http 和相关命名空间中的类面向 HTTP 和 REST 开发的所有级别:
- 基本 HTTP 开发人员
- 特定于站点的 HTTP 库开发人员
- 高级 HTTP 开发人员
对于基本 HTTP 开发人员,新 API 具有一个简单的接口,用于处理最常见的任务和在大多数环境中运行的身份验证的合理默认值。 对于库开发人员来说,一致的对象模型和多种语言支持意味着你可以为所有语言的开发人员编写一次库。 对于高级 HTTP 开发人员,新 API 包括一组丰富的功能。
Windows.Web.Http 命名空间和相关命名空间提供以下组件:
- HttpClient - 通过 HTTP 发送和接收请求的main类。
- HttpRequestMessage - RFC 2616 中定义的 HTTP 请求消息。
- HttpResponseMessage - RFC 2616 中定义的 HTTP 响应消息。
HTTP 消息的内容对应于 RFC 2616 中定义的实体正文。 Windows.Web.Http 命名空间中的多个类和接口可用于 HTTP 内容,包括:
- IHttpContent - 供开发人员创建自己的内容对象的基接口。 它表示 HTTP 实体正文和内容标头。 此接口具有获取和设置实际内容数据的方法。 它还提供用于获取和设置内容相关标头的属性。
- HttpBufferContent - 使用缓冲区的 HTTP 内容。
- HttpFormUrlEncodedContent - HTTP 内容,它使用以 application/x-www-form-urlencoded MIME 类型编码的名称/值元组。
- HttpMultipartContent - 使用 多部分/* MIME 类型的 HTTP 内容。
- HttpMultipartFormDataContent - 使用编码的多 部分/表单数据 MIME 类型的 HTTP 内容。
- HttpStreamContent - 使用流的 HTTP 内容。 此内容类型由 HTTP GET 方法用于接收数据,HTTP POST 方法用于上传数据。
- HttpStringContent - 使用字符串的 HTTP 内容。
Windows.Web.Http.Headers 命名空间中的类表示 RFC 2616 中定义的 HTTP 标头。 HTTP 标头与 HttpRequestMessage 和 HttpResponseMessage 关联为检索或设置的属性。
Windows.Web.Http 命名空间中的类可以使用基于 Windows.Web.Http.Filters 命名空间中的类的筛选器。 筛选器提供处理程序来帮助解决常见的 HTTP 服务问题。 筛选器可以按顺序链接在一起,以解决更复杂的 HTTP 服务问题。 Windows 8.1附带了多个现成的筛选器,可帮助库开发人员解决常见的 HTTP 服务问题。 这些筛选器包括受监视网络连接和重试的处理程序。 库开发人员可以针对特定于站点的问题编写自己的筛选器 (例如,网站可能会使用 503 (服务器不可用) 响应来指示应重试请求) 。
如果使用 Windows.Web.Http 命名空间和相关 Windows.Web.Http.Headers 和 Windows.Web.Http.Filters 命名空间的应用 (50 兆字节或更多) 下载大量数据,则应用应流式传输这些下载内容,而不使用默认缓冲。 如果使用默认缓冲,客户端内存使用量会非常大,这可能会导致性能降低。
有关 C#/VB/C++ 和 XAML 中演示如何使用 HttpClient 连接到 HTTP 服务器的示例代码,请参阅 HttpClient。
有关 JavaScript 和 HTML 中演示如何使用 HttpClient 连接到 HTTP 服务器的示例代码,请参阅 使用 Windows.Web.Http 连接到 HTTP 服务器。