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.
- WinJS.xhr для JavaScript
- HttpClient в пространстве имен System.Net.Http для C# и VB.
- IXMLHTTPRequest2 для C++
Классы в 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.