Поделиться через


HttpClient Класс

Определение

Отправляет HTTP-запросы и получает HTTP-ответы от ресурса, определяемого URI. Руководство по программированию для класса 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
Наследование
Object Platform::Object IInspectable HttpClient
Атрибуты
Реализации

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

В следующем примере кода показано, как получить содержимое с веб-сервера в виде строки.

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 часто используется приложением для скачивания и последующего анализа текста. Возможно, кодировка символов, указанная в заголовке Content-Type HTTP-сервером , не соответствует кодировке символов текста 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).

Если приложение, используюющее HttpClient и связанные классы в пространстве имен Windows.Web.Http , скачивает большие объемы данных (50 мб или более), приложение должно выполнять потоковую передачу этих скачиваемых файлов и не использовать буферизацию по умолчанию. Если используется буферизация по умолчанию, использование памяти клиента будет очень большим, что может привести к снижению производительности.

Пример кода на C# и C++/WinRT, демонстрирующий использование HttpClient для подключения к HTTP-серверу, см. в разделе HttpClient.

Пример кода в JavaScript и HTML, демонстрирующий использование HttpClient для подключения к HTTP-серверу, см. в статье Подключение к HTTP-серверу с помощью Windows.Web.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)

Инициализирует новый экземпляр класса HttpClient с помощью определенного фильтра для обработки сообщений http-ответов. Руководство по программированию для класса HttpClient и примеры кода см. в разделе о концепции HttpClient .

Свойства

DefaultPrivacyAnnotation

Отправляет HTTP-запросы и получает HTTP-ответы от ресурса, определяемого URI. Руководство по программированию для класса 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)

Отправьте запрос GET на указанный универсальный код ресурса (URI ) с параметром завершения HTTP в качестве асинхронной операции. Руководство по программированию для класса 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 .

Применяется к

См. также раздел