Подключение к веб-службам (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 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).
В этом разделе
Тема | Описание |
---|---|
Отправка запроса GET в веб-службу и получение ответа с помощью класса Windows.Web.Http.HttpClient в пространстве имен Windows.Web.Http. |
|
С помощью значения "ms-https-connections-only" элемента meta вы можете запретить своему приложению использовать HTTP-подключения для навигации или иных действий по извлечению веб-содержимого, не относящегося к мультимедиа. Когда вы устанавливаете для атрибута content этого элемента meta значение "true", навигация и действия по извлечению веб-содержимого, не относящегося к мультимедиа, с помощью HTTP-подключения не будут выполняться. |
|
С помощью WinJS.xhr можно легко скачивать веб-содержимое в ваше приложение. В этом разделе показано, как скачать файл с помощью WinJS.xhr, обработать любые ошибки, а также продемонстрировать ход выполнения скачивания. Кроме того, здесь рассказывается, как скачивать различные типы содержимого. |
|
Вы можете выкладывать и скачивать двоичные данные при использовании WinJS.xhr (что создает оболочку XMLHttpRequest). В этом примере показано, как выложить точечный рисунок из библиотеки изображений. Метод среды выполнения Windows, используемый для открытия файла точечного рисунка, возвращает IRandomAccessStream, поэтому необходимо использовать MSApp.createBlobFromRandomAccessStream, чтобы преобразовать его в Blob. Предупреждение Вы можете использовать XMLHttpRequest, чтобы отправить или скачать объекты, размер которых больше нескольких мегабайт (таких как объекты Blob и FormData), что может потребовать больше времени. Так как работу приложений можно завершить в любой момент, для этих операций стоит использовать API среды выполнения Windows для передачи данных в фоновом режиме. Дополнительную информацию об отправке и скачивании содержимого см. в разделе Как отправить файл и Как скачать файл. Общую информацию о передаче данных в фоновом режиме см. в разделе Transferring data in the background. |
|
Когда вы обращаетесь к веб-ресурсам с помощью WinJS.xhr, отклик может кэшироваться, а это значит, что при последующих запросах будет возвращаться уже существующая у клиента версия ресурса вместо повторной отправки запроса. Однако можно добавить заголовок HTTP, что обеспечит повторную отправку запроса, даже если он уже был кэширован. |
|
Настройка значений времени ожидания с помощью WinJS.xhr или HttpClient |
При использовании объекта XMLHttpRequest можно задать значения времени ожидания напрямую, что невозможно при использовании Windows.Web.Http.HttpClient или WinJS.xhr. Тем не менее есть способ настройки времени ожидания в объектах WinJS.Promise. Вызов метода WinJS.Promise.timeout гарантирует, что запрос, не завершенный в течение указанного времени, будет отменен. |
Гибридное веб-приложение — это веб-приложение, которое использует данные из двух и более источников для создания новых объектов. Этот пример демонстрирует, как с помощью XMLHttpRequest (XHR) можно получить и отобразить удаленный RSS-канал. |
Связанные разделы
Другие ресурсы
Объявление возможностей приложения
Обработка исключений в сетевых приложениях
Настройка возможностей сетевой изоляции
Использование интерфейса замыкания на себя и отладка сетевой изоляции
Ссылки
Примеры
Пример интеграции содержимого и элементов управления из веб-служб
Использование большого двоичного объекта для сохранения и загрузки примера содержимого
Пример веб-проверки подлинности
Пример XHR, обработки ошибок навигации и схем URL-адресов