Conexión a servicios web (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Estos temas muestran diversos métodos para conectar con un servicio web en una aplicación de Windows en tiempo de ejecución. El método recomendado consiste en usar Windows.Web.Http.HttpClient, una nueva clase de Windows en tiempo de ejecución disponible para todos los idiomas. Esta es la API más completa y eficaz que puede utilizar una aplicación para acceder a un servicio web.

Las clases del espacio de nombres Windows.Web.Http proporcionan una interfaz de programación para aplicaciones de cliente HTTP modernas. El espacio de nombres Windows.Web.Http y los espacios de nombres relacionados Windows.Web.Http.Headers y Windows.Web.Http.Filters proporcionan componentes de cliente HTTP que permiten a los usuarios realizar solicitudes HTTP y recibir respuestas HTTP de servicios web modernos a través de HTTP.

En las operaciones de solicitud HTTP básicas, Windows.Web.Http.HttpClient tiene una interfaz sencilla para administrar la tareas más comunes y proporciona valores predeterminados razonables para autenticación (AUTH) que se aplican a la mayoría de los escenarios. En las operaciones HTTP más complejas, se ofrecen muchas funcionalidades adicionales.

En los temas de esta sección también se describe un contenedor de la biblioteca de Windows para JavaScript para XMLHttpRequest denominado WinJS.xhr. WinJS.xhr proporciona una manera sencilla de acceder a contenido web en tu aplicación. Puedes usar WinJS.xhr para realizar solicitudes HTTP o HTTPS para cargar o descargar contenido y archivos de cualquier formato.

A diferencia de XMLHttpRequest, que permite especificar si la solicitud debe hacerse de manera asincrónica o no, WinJS.xhr siempre es asincrónico. WinJS.xhr devuelve WinJS.Promise, de modo que puedes atender solicitudes completadas, errores y solicitudes en curso con los métodos then o done.

Advertencia  Ahora es posible usar XMLHttpRequest para transferir objetos extremadamente grandes, como objetos Blob y FormData, que probablemente tarden mucho tiempo en completarse. Windows.Web.Http.HttpClient también se puede usar para enviar o recibir objetos extremadamente grandes tales como secuencias. Como una aplicación puede cerrarse en cualquier momento, debes considerar la posibilidad de usar la transferencia en segundo plano en el espacio de nombres Windows.Networking.BackgroundTransfer para estas operaciones. Para obtener más información sobre la carga y descarga de contenido de gran tamaño, consulta los temas Cómo cargar un archivo y Transferencia de datos en segundo plano.

 

En la siguiente tabla se enumeran las API que las aplicaciones escritas en JavaScript pueden usar para acceder a un servicio web. La plataforma indica la versión de Windows donde se agregó la característica por primera vez.

API Plataforma Comentarios

Windows.Web.Http.HttpClient

Windows 8.1, Windows Phone 8.1, Windows Server 2012 R2

Es el método recomendado para conectar con un servidor HTTP para enviar y recibir datos.

Esta característica también se admite en aplicaciones escritas en JavaScript, C#, Visual Basic y C++

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

En Windows 8 y Windows Server 2012, era el método recomendado cuando XMLHttpRequest no resultaba adecuado.

XMLHttpRequest Windows 8, Windows Phone 8.1, Windows Server 2012 Este objeto y API está disponible en las implementaciones de JavaScript en la mayoría de exploradores web modernos.

 

Audiencia del desarrollador

Desarrolladores que usan JavaScript y HTML interesados en crear aplicaciones que se conecten a un servicio web.

La información de este tema es aplicable a las aplicaciones escritas en JavaScript y HTML.

Para obtener más información sobre cómo conectar con un servicio web para aplicaciones escritas en C++/XAML y aplicaciones que usan .NET Framework 4.5 y están escritas en C# o Visual Basic, consulta Conexión a servicios web (XAML).

En esta sección

Tema Descripción

Cómo conectar a un servidor HTTP mediante Windows.Web.Http

Envía una solicitud GET a un servicio web y recupera la respuesta mediante la clase Windows.Web.Http.HttpClient del espacio de nombres Windows.Web.Http.

Cómo requerir una conexión HTTPS

Con el valor del elemento "ms-https-connections-only" meta puedes evitar que tu aplicación use conexiones HTTP para navegar u otras formas de recuperación de contenido web que no sean medios. Cuando estableces el atributo content del elemento meta en "true", la navegación HTTP y la recuperación de contenido web que no sean medios tendrán errores.

Cómo descargar un archivo con WinJS.xhr

WinJS.xhr proporciona una manera sencilla de descargar contenido web en tu aplicación. En este tema se muestra cómo descargar un archivo con WinJS.xhr, controlar los errores e informar sobre el progreso de la descarga. También se muestra cómo descargar distintos tipos de contenido.

Cómo cargar datos binarios con WinJS.xhr

Puedes cargar y descargar datos binarios cuando usas WinJS.xhr (que encapsula XMLHttpRequest). En este ejemplo se muestra cómo cargar un mapa de bits desde tus Imágenes. El método de Windows en tiempo de ejecución que se usa para abrir el archivo de mapa de bits devuelve una IRandomAccessStream, por lo que debes usar MSApp.createBlobFromRandomAccessStream para convertirlo en un Blob.

Advertencia  Ahora puedes usar XMLHttpRequest para cargar o descargar objetos que son más grandes que unos pocos MB, como objetos Blob y FormData, que podrían tardar mucho tiempo en completarse. Como las aplicaciones se pueden cerrar en cualquier momento, debes considerar la posibilidad de usar API de transferencia en segundo plano de Windows en tiempo de ejecución para estas operaciones. Para más información sobre la carga y descarga de contenido, consulta Cómo cargar un archivo y Cómo descargar un archivo. Para ver una explicación general de la transferencia en segundo plano, consulta Transferring data in the background.
 

Cómo garantizar que WinJS.xhr reenvía solicitudes

Al solicitar recursos web con WinJS.xhr, es posible que la respuesta se almacene en caché, lo que significa que las solicitudes posteriores devolverán la versión del recurso que ya existe en el equipo cliente en lugar de volver a enviar la solicitud. Sin embargo, puedes agregar un encabezado HTTP que garantice que la solicitud se vuelva a enviar, incluso si ya se almacenó en caché.

Establecer valores de tiempo de espera con WinJS.xhr o HttpClient

Al usar XMLHttpRequest, puedes establecer valores de tiempo de espera directamente, algo que no es posible con Windows.Web.Http.HttpClient o WinJS.xhr. Sin embargo, existe un modo de establecer tiempos de espera en objetos WinJS.Promise. Al llamar a WinJS.Promise.timeout, harás que la solicitud se cancele si no se completa dentro del intervalo de tiempo especificado.

Cómo crear un mashup con WinJS.xhr

Un mashup es una aplicación web que usa datos de dos o más orígenes para crear algo nuevo. Este ejemplo muestra cómo usar XMLHttpRequest (XHR) para recuperar y mostrar una fuente Really Simple Syndication (RSS) remota.

 

Temas relacionados

Otros recursos

Declaraciones de funcionalidad de las aplicaciones

Controlar excepciones en aplicaciones de red

Cómo configurar las funcionalidades de aislamiento de red

Cómo habilitar el bucle invertido y depurar el aislamiento de red

Referencia

Windows.Foundation.Uri

Windows.Web.Http

Windows.Web.Http.Filters

Windows.Web.Http.Headers

Windows.Web.Http.HttpClient

WinJS.xhr

XMLHttpRequest

Muestras

Muestra de HttpClient

Integrar contenido y controles de una muestra de servicios web

Muestra del uso de un blob para guardar y cargar contenido

Muestra de autenticación web

XHR, control de errores de navegación y muestra de esquemas de direcciones URL