Подключение к веб-службам (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

В этих разделах показаны различные методы подключения к веб-службам из приложения среды выполнения Windows. Рекомендуется использовать новый класс среды выполнения Windows Windows.Web.Http.HttpClient, доступный для всех языков. Это самый полнофункциональный и эффективный API, при помощи которого приложение может обращаться к веб-службе.

Классы в пространстве имен Windows.Web.Http предоставляют программный интерфейс для современных клиентских приложений HTTP. Пространство имен Windows.Web.Http и связанные с ним пространства имен Windows.Web.Http.Headers и Windows.Web.Http.Filters предоставляют клиентские компоненты HTTP, которые позволяют пользователям совершать HTTP-запросы и получать HTTP-ответы от современных веб-служб по протоколу HTTP.

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

В статьях этого раздела также обсуждается оболочка из библиотеки Windows для JavaScript для XMLHttpRequest, которая называется WinJS.xhr. WinJS.xhr предоставляет удобный доступ к веб-содержимому из приложения. WinJS.xhr позволяет создавать HTTP- и HTTPS-запросы для скачивания и отправки содержимого и файлов любого формата.

В отличие от объекта XMLHttpRequest, который позволяет указать, должен ли запрос быть асинхронным, функция WinJS.xhr всегда является асинхронной. WinJS.xhr возвращает WinJS.Promise, поэтому можно обработать выполненные запросы, ошибки и выполняющиеся запросы методами then или done.

Предупреждение  Теперь можно использовать XMLHttpRequest для переноса очень больших объектов, таких как объекты Blob и FormData. Выполнение подобных операций может занять много времени. Windows.Web.Http.HttpClient также можно использовать для отправки и получения исключительно больших объектов, в том числе потоков. Поскольку работа приложения может быть завершена в любой момент, рекомендуется использовать для таких операций фоновую передачу в пространстве имен Windows.Networking.BackgroundTransfer. Дополнительные сведения о скачивании и отправке объемного содержимого см. в разделах Отправка файла и Передача данных в фоновом режиме.

 

В следующей таблице перечислены API, которые можно использовать для доступа к веб-службе из приложения на JavaScript. В столбце "Платформа" показана версия Windows, в которой впервые появилась данная возможность.

API Платформа Комментарии

Windows.Web.Http.HttpClient

Windows 8.1, Windows Phone 8.1, Windows Server 2012 R2

Это рекомендуемый метод подключения к HTTP-серверу для отправки и получения данных.

Эта функция также поддерживается в приложениях на JavaScript, C#, Visual Basic и C++

WinJS.xhr Windows 8, Windows Phone 8.1, Windows Server 2012

В Windows 8 и Windows Server 2012 это рекомендуемый метод, когда XMLHttpRequest не дает нужного результата.

XMLHttpRequest Windows 8, Windows Phone 8.1, Windows Server 2012 Этот объект и API доступны в реализациях JavaScript в большинстве современных веб-браузеров.

 

Разработчики

Разработчики, использующие JavaScript и HTML и заинтересованные в создании приложений, подключающихся к веб-службам.

Информация в этой статье распространяется на приложения, написанные на JavaScript и HTML.

Подробнее о подключении к веб-службе для приложений, написанных на C++ или XAML, а также для приложений, использующих платформу .NET Framework 4.5 и написанных на C# или Visual Basic, см. в статье Подключение к веб-службам (XAML).

В этом разделе

Тема Описание

Подключение к HTTP-серверу с помощью Windows.Web.Http

Отправка запроса GET в веб-службу и получение ответа с помощью класса Windows.Web.Http.HttpClient в пространстве имен Windows.Web.Http.

Запрос HTTPS-соединения

С помощью значения "ms-https-connections-only" элемента meta вы можете запретить своему приложению использовать HTTP-подключения для навигации или иных действий по извлечению веб-содержимого, не относящегося к мультимедиа. Когда вы устанавливаете для атрибута content этого элемента meta значение "true", навигация и действия по извлечению веб-содержимого, не относящегося к мультимедиа, с помощью HTTP-подключения не будут выполняться.

Скачивание файла с помощью WinJS.xhr

С помощью WinJS.xhr можно легко скачивать веб-содержимое в ваше приложение. В этом разделе показано, как скачать файл с помощью WinJS.xhr, обработать любые ошибки, а также продемонстрировать ход выполнения скачивания. Кроме того, здесь рассказывается, как скачивать различные типы содержимого.

Отправка двоичных данных с помощью WinJS.xhr

Вы можете выкладывать и скачивать двоичные данные при использовании WinJS.xhr (что создает оболочку XMLHttpRequest). В этом примере показано, как выложить точечный рисунок из библиотеки изображений. Метод среды выполнения Windows, используемый для открытия файла точечного рисунка, возвращает IRandomAccessStream, поэтому необходимо использовать MSApp.createBlobFromRandomAccessStream, чтобы преобразовать его в Blob.

Предупреждение  Вы можете использовать XMLHttpRequest, чтобы отправить или скачать объекты, размер которых больше нескольких мегабайт (таких как объекты Blob и FormData), что может потребовать больше времени. Так как работу приложений можно завершить в любой момент, для этих операций стоит использовать API среды выполнения Windows для передачи данных в фоновом режиме. Дополнительную информацию об отправке и скачивании содержимого см. в разделе Как отправить файл и Как скачать файл. Общую информацию о передаче данных в фоновом режиме см. в разделе Transferring data in the background.
 

Как убедиться, что WinJS.xhr перенаправляет запросы

Когда вы обращаетесь к веб-ресурсам с помощью WinJS.xhr, отклик может кэшироваться, а это значит, что при последующих запросах будет возвращаться уже существующая у клиента версия ресурса вместо повторной отправки запроса. Однако можно добавить заголовок HTTP, что обеспечит повторную отправку запроса, даже если он уже был кэширован.

Настройка значений времени ожидания с помощью WinJS.xhr или HttpClient

При использовании объекта XMLHttpRequest можно задать значения времени ожидания напрямую, что невозможно при использовании Windows.Web.Http.HttpClient или WinJS.xhr. Тем не менее есть способ настройки времени ожидания в объектах WinJS.Promise. Вызов метода WinJS.Promise.timeout гарантирует, что запрос, не завершенный в течение указанного времени, будет отменен.

Создание гибридного веб-приложения с помощью WinJS.xhr

Гибридное веб-приложение — это веб-приложение, которое использует данные из двух и более источников для создания новых объектов. Этот пример демонстрирует, как с помощью XMLHttpRequest (XHR) можно получить и отобразить удаленный RSS-канал.

 

Связанные разделы

Другие ресурсы

Объявление возможностей приложения

Обработка исключений в сетевых приложениях

Настройка возможностей сетевой изоляции

Использование интерфейса замыкания на себя и отладка сетевой изоляции

Ссылки

Windows.Foundation.Uri

Windows.Web.Http

Windows.Web.Http.Filters

Windows.Web.Http.Headers

Windows.Web.Http.HttpClient

WinJS.xhr

XMLHttpRequest

Примеры

Пример HttpClient

Пример интеграции содержимого и элементов управления из веб-служб

Использование большого двоичного объекта для сохранения и загрузки примера содержимого

Пример веб-проверки подлинности

Пример XHR, обработки ошибок навигации и схем URL-адресов