HttpClient 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
发送 HTTP 请求,并从 URI 标识的资源接收 HTTP 响应。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。
public ref class HttpClient sealed : IClosable, IStringable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class HttpClient final : IClosable, IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class HttpClient final : IClosable, IStringable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class HttpClient : System.IDisposable, IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class HttpClient : System.IDisposable, IStringable
function HttpClient(filter)
Public NotInheritable Class HttpClient
Implements IDisposable, IStringable
- 继承
- 属性
- 实现
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
以下示例代码演示如何以字符串的形式从 Web 服务器获取内容。
using System;
var uri = new System.Uri("http://www.bing.com");
using (var httpClient = new Windows.Web.Http.HttpClient())
{
// Always catch network exceptions for async methods
try
{
string result = await httpClient.GetStringAsync(uri);
}
catch (Exception ex)
{
// Details in ex.Message and ex.HResult.
}
}
// Having exited the scope of the using statement, httpClient.Dispose() will be called
// automatically, thus freeing up system resources (the underlying socket, and memory
// used for the object).
#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;
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
{
// 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).
应用通常使用 HttpClient 类下载并分析文本。 HTTP 服务器在 Content-Type 标头中指定的字符编码可能与 HTTP 响应正文的字符编码不匹配, (XML 文档中的 XML 编码,例如) 。 对文本使用 HttpClient 的一种方法是调用 GetStringAsync 方法,并将返回的字符串传递给文本分析器。 但是,如果 Content-Type 不是可表示为字符串的类型,则可能会导致错误。 将 HttpClient 与 XML 分析程序配合使用的可靠方法是调用 GetBufferAsync 方法并分析“xml>”<元素的缓冲区。 然后使用指定的字符编码 (“<xmlversion=”1.0“ encoding=”UTF-8“?>”,例如) 来分析 HTTP 响应正文。 对于其他文本格式,应用扫描 HTTP 响应正文的初始部分以确定使用的字符编码时,可以使用类似的方法。
注解
HttpClient 类实例充当发送 HTTP 请求和接收响应的会话。 HttpClient 实例是应用于该实例执行的所有请求的设置集合。 此外,每个 HttpClient 实例都使用自己的连接池,将其请求与其他 HttpClient 实例执行的请求隔离开来。
HttpClient 还充当类,用于更具体的 HTTP 客户端的筛选器。 例如,HttpClientFilter 提供特定于社交网络服务的其他方法 (GetFriends 方法,例如) 。
如果应用在 Windows.Web.Http 命名空间中使用 HttpClient 和相关类下载大量数据 (50 MB 或更多) ,则应用应流式传输这些下载内容,而不使用默认缓冲。 如果使用默认缓冲,客户端内存使用量会非常大,这可能会导致性能降低。
有关 C# 和 C++/WinRT 中演示如何使用 HttpClient 连接到 HTTP 服务器的示例代码,请参阅 HttpClient。
有关 JavaScript 和 HTML 中演示如何使用 HttpClient 连接到 HTTP 服务器的示例代码,请参阅 使用 Windows.Web.Http 连接到 HTTP 服务器。
版本历史记录
Windows 版本 | SDK 版本 | 已添加值 |
---|---|---|
1903 | 18362 | TryDeleteAsync |
1903 | 18362 | TryGetAsync (Uri) |
1903 | 18362 | TryGetAsync (Uri,HttpCompletionOption) |
1903 | 18362 | TryGetBufferAsync |
1903 | 18362 | TryGetInputStreamAsync |
1903 | 18362 | TryGetStringAsync |
1903 | 18362 | TryPostAsync |
1903 | 18362 | TryPutAsync |
1903 | 18362 | TrySendRequestAsync (HttpRequestMessage) |
1903 | 18362 | TrySendRequestAsync (HttpRequestMessage,HttpCompletionOption) |
构造函数
HttpClient() |
初始化 HttpClient 类的新实例。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
HttpClient(IHttpFilter) |
使用用于处理 HTTP 响应消息的特定筛选器初始化 HttpClient 类的新实例。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
属性
DefaultPrivacyAnnotation |
发送 HTTP 请求,并从 URI 标识的资源接收 HTTP 响应。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
DefaultRequestHeaders |
获取应随每个请求一起发送的标头的集合。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
方法
Close() |
关闭 HttpClient 实例并释放分配的资源。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
DeleteAsync(Uri) |
将 DELETE 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
Dispose() |
执行与释放或重置非托管资源关联的应用程序定义的任务。 |
GetAsync(Uri) |
以异步操作将 GET 请求发送给指定 URI。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
GetAsync(Uri, HttpCompletionOption) |
使用 HTTP 完成选项作为异步操作将 GET 请求发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
GetBufferAsync(Uri) |
将 GET 请求发送到指定的 URI,并在异步操作中将响应正文作为缓冲区返回。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
GetInputStreamAsync(Uri) |
将 GET 请求发送到指定的 URI ,并在异步操作中将响应正文作为流返回。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
GetStringAsync(Uri) |
将 GET 请求发送到指定 URI 并在异步操作中以字符串的形式返回响应正文。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
PostAsync(Uri, IHttpContent) |
将 POST 请求作为异步操作发送到指定的 URI。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
PutAsync(Uri, IHttpContent) |
以异步操作将 PUT 请求发送给指定 URI。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
SendRequestAsync(HttpRequestMessage) |
以异步操作发送 HTTP 请求。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
SendRequestAsync(HttpRequestMessage, HttpCompletionOption) |
使用 HTTP 完成选项作为异步操作发送 HTTP 请求。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
ToString() |
返回表示当前 HttpClient 对象的字符串。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryDeleteAsync(Uri) |
将 DELETE 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryGetAsync(Uri) |
将 GET 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryGetAsync(Uri, HttpCompletionOption) |
将 GET 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryGetBufferAsync(Uri) |
将 GET 请求发送到指定的 URI,并在异步操作中以 HttpGetBufferResult 的形式返回响应正文,其值为 IBuffer。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryGetInputStreamAsync(Uri) |
将 GET 请求发送到指定的 URI ,并在异步操作中将响应正文作为流返回。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryGetStringAsync(Uri) |
将 GET 请求发送到指定 URI 并在异步操作中以字符串的形式返回响应正文。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryPostAsync(Uri, IHttpContent) |
将 POST 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TryPutAsync(Uri, IHttpContent) |
将 PUT 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TrySendRequestAsync(HttpRequestMessage) |
将 HTTP 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |
TrySendRequestAsync(HttpRequestMessage, HttpCompletionOption) |
将包含完成选项的 HTTP 请求作为异步操作发送到指定的 URI 。 有关 HttpClient 类的编程指南和代码示例,请参阅 HttpClient 概念主题。 |