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


Windows.Web.Http Пространство имен

Предоставляет современный API клиента HTTP для приложения UWP.

Классы

HttpBufferContent

Предоставляет содержимое HTTP, использующее буфер.

HttpClient

Отправляет HTTP-запросы и получает HTTP-ответы от ресурса, определяемого URI. Руководство по программированию для класса HttpClient и примеры кода см. в разделе о концепции HttpClient .

HttpCookie

Предоставляет набор свойств и методов для управления файлами cookie HTTP.

HttpCookieCollection

Предоставляет контейнер коллекции для экземпляров класса HttpCookie .

HttpCookieManager

Добавление или удаление HttpCookie или просмотр файлов cookie, связанных с приложением.

HttpFormUrlEncodedContent

Предоставляет содержимое HTTP, использующее данные "имя-значение", закодированные с помощью типа MIME application/x-www-form-urlencoded .

HttpGetBufferResult

Объединяет конечный результат буфера и следующее: исходный HTTP-запрос, результирующий HTTP-ответ (если таковой имеется), расширенное значение ошибки и успешное указание.

HttpGetInputStreamResult

Объединяет конечный результат входного потока со следующими: исходный HTTP-запрос, результирующий HTTP-ответ (если таковой имеется), расширенное значение ошибки и успешное указание.

HttpGetStringResult

Объединяет конечный результат строки и следующее: исходный HTTP-запрос, результирующий HTTP-ответ (если таковой имеется), расширенное значение ошибки и указание об успешном выполнении.

HttpMethod

Извлекает стандартные методы HTTP, такие как GET и POST, и создает новые методы HTTP.

HttpMultipartContent

Предоставляет содержимое HTTP, использующее тип MIME multipart/*.

HttpMultipartFormDataContent

Предоставляет содержимое HTTP, использующее тип MIME multipart/form-data .

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 предоставляют программный интерфейс для приложения UWP, предназначенного для служб HTTP и REST. Эти функции этого нового API HTTP предназначены для соответствия требованиям HTTP, как определено в RFC 2616 в IETF. Новый API HTTP обеспечивает согласованную поддержку javaScript, C#, VB.NET и C++ для разработчиков.

Этот новый API заменяет использование трех разных API различными функциями, которые ранее были необходимы для каждой языковой проекции в Windows 8.

Классы в Windows.Web.Http и связанных пространствах имен предназначены для всех уровней разработки HTTP и REST:

  • Базовые разработчики HTTP
  • Разработчики библиотек HTTP для конкретных сайтов
  • Опытные разработчики HTTP

Для базовых разработчиков HTTP новый API имеет простой интерфейс для обработки наиболее распространенных задач и разумные значения по умолчанию для проверки подлинности, которые должны работать в большинстве сред. Для разработчиков библиотек согласованная объектная модель и поддержка нескольких языков означает, что вы можете создать библиотеку один раз для разработчиков на всех языках. Для опытных разработчиков HTTP новый API включает широкий набор возможностей.

Пространство имен Windows.Web.Http и связанные пространства имен предоставляют следующие компоненты:

  • HttpClient — класс main, который отправляет и получает запросы по протоколу HTTP.
  • HttpRequestMessage — сообщения HTTP-запросов, определенные в RFC 2616.
  • HttpResponseMessage — http-ответные сообщения, определенные в RFC 2616.

Содержимое HTTP-сообщения соответствует тексту сущности, определенной в RFC 2616. Для содержимого HTTP можно использовать несколько классов и интерфейс в пространстве имен Windows.Web.Http, в том числе:

  • IHttpContent — базовый интерфейс для разработчиков для создания собственных объектов содержимого. Он представляет текст сущности HTTP и заголовки содержимого. Этот интерфейс содержит методы, которые получают и задают фактические данные содержимого. Он также предоставляет свойства, которые получают и задают заголовки, связанные с содержимым.
  • HttpBufferContent — содержимое HTTP, использующее буфер.
  • HttpFormUrlEncodedContent — содержимое HTTP, в котором используются кортежи типа MIME application/x-www-form-urlencoded .
  • HttpMultipartContent — содержимое HTTP, использующее тип MIME multipart/*.
  • HttpMultipartFormDataContent — содержимое HTTP, использующее закодированный тип MIME multipart/form-data .
  • HttpStreamContent — содержимое HTTP, использующее поток. Этот тип контента используется методом HTTP GET для получения данных и методом HTTP POST для отправки данных.
  • HttpStringContent — содержимое HTTP, использующее строку.

Классы в пространстве имен Windows.Web.Http.Headers представляют заголовки HTTP, определенные в RFC 2616. Заголовки 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-серверу, см. в статье Подключение к HTTP-серверу с помощью Windows.Web.Http.