Conectando-se a serviços Web (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Estes tópicos demonstram vários métodos para se conectar a um serviço Web em um aplicativo do Tempo de Execução do Windows. O método recomendado é usar Windows.Web.Http.HttpClient, uma nova classe de Tempo de Execução do Windows que está disponível para todas as linguagens. Esse é o recurso mais completo e de API poderosa que um aplicativo pode usar para acessar um serviço Web.

As classes no namespace Windows.Web.Http fornecem uma interface de programação para aplicativos cliente HTTP modernos. O namespace Windows.Web.Http e os namespaces Windows.Web.Http.Headers e Windows.Web.Http.Filters relacionados fornecem componentes de cliente HTTP que permitem que os usuários façam solicitações e recebam respostas HTTP de serviços Web modernos por HTTP.

Para operações básicas de solicitação HTTP, o Windows.Web.Http.HttpClient tem uma interface simples para tratar as tarefas mais comuns e fornece padrões adequados de autenticação (AUTH) que se aplicam à maioria dos cenários. Para operações HTTP mais complexas, há muitos recursos adicionais incluídos.

Os tópicos desta seção também apresentam um wrapper da Biblioteca do Windows para JavaScript para XMLHttpRequest chamado WinJS.xhr. WinJS.xhr, que fornece uma maneira fácil de acessar conteúdo da web em seu aplicativo. Você pode usar WinJS.xhr para fazer solicitações HTTP ou HTTPS para baixar ou carregar conteúdo e arquivos de qualquer formato.

Diferente de XMLHttpRequest, que permite especificar se a solicitação deve ser feita assincronamente, o WinJS.xhr é sempre assíncrono. O WinJS.xhr retorna um WinJS.Promise; dessa forma, você pode manipular as solicitações concluídas, os erros e as solicitações em andamento usando os métodos then ou done.

Aviso  Agora também é possível usar XMLHttpRequest para transferir objetos muito grandes, como objetos Blob e FormData, o que pode levar muito tempo para concluir. O Windows.Web.Http.HttpClient também pode ser usado para enviar ou receber objetos muito grandes, incluindo fluxos. Como um aplicativo pode ser encerrado a qualquer momento, considere a possibilidade de usar a transferência em segundo plano do namespace Windows.Networking.BackgroundTransfer para essas operações. Para saber mais sobre o carregamento e o download de um conteúdo muito grande, veja Como carregar um arquivo e Transferindo dados em segundo plano.

 

A tabela a seguir lista as APIs que podem ser usadas para acessar um serviço Web por aplicativos escritos em JavaScript. A plataforma indica a versão do Windows na qual o recurso foi adicionado pela primeira vez.

API Plataforma Comentários

Windows.Web.Http.HttpClient

Windows 8.1, Windows Phone 8.1, Windows Server 2012 R2

Este é o método recomendado para se conectar a um servidor HTTP para enviar e receber dados.

Esse recurso também tem suporte em aplicativos escritos em JavaScript, C#, Visual Basic e C++.

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

No Windows 8 e no Windows Server 2012, este era o método recomendado quando XMLHttpRequest não era adequado.

XMLHttpRequest Windows 8, Windows Phone 8.1, Windows Server 2012 Este objeto e API estão disponíveis em implementações JavaScript na maioria dos navegadores da Web modernos.

 

Público-alvo de desenvolvedores

Desenvolvedores que usam JavaScript e HTML interessados em criar aplicativos que se conectam a um serviço Web.

As informações neste tópico se aplicam a aplicativos escritos em JavaScript e HTML.

Para saber mais sobre como se conectar a um serviço Web para aplicativos escritos em C++/XAML e aplicativos que usam o .NET Framework 4.5 escritos em C# ou Visual Basic, veja Conectando-se a serviços Web (XAML).

Nesta seção

Tópico Descrição

Como conectar-se a um servidor HTTP usando Windows.Web.Http

Envie uma solicitação GET a um serviço Web e recupere a resposta usando a classe Windows.Web.Http.HttpClient no namespace Windows.Web.Http.

Como exigir uma conexão HTTPS

Com o valor de elemento "ms-https-connections-only" meta, é possível evitar que o aplicativo use conexões HTTP para navegação ou outras recuperações de conteúdo da Web não relacionadas a mídia. Quando você define o atributo meta desse elemento content como "true", ocorre falha na navegação HTTP e nas recuperações de conteúdo da Web não relacionadas a mídia.

Como baixar um arquivo com WinJS.xhr

O WinJS.xhr fornece uma maneira fácil de baixar conteúdo da Web em seu aplicativo. Este tópico mostra como baixar um arquivo usando WinJS.xhr, tratar erros e relatar o progresso do download. Ele mostra também como baixar diferentes tipos de conteúdo.

Como carregar dados binários com WinJS.xhr

Você pode carregar e baixar dados binários ao usar WinJS.xhr (que encapsula XMLHttpRequest). Este exemplo mostra como carregar um bitmap de Imagens. O método do Tempo de Execução do Windows usado para abrir o arquivo de bitmap retorna IRandomAccessStream e, portanto, você deve usar MSApp.createBlobFromRandomAccessStream para convertê-lo em Blob.

Aviso  Agora você pode usar a XMLHttpRequest para carregar ou baixar objetos com alguns MB, como objetos Blob e FormData, o que pode levar muito tempo para concluir. Como os aplicativos podem ser encerrados a qualquer momento, considere a possibilidade de usar as APIs de transferência em segundo plano do Tempo de Execução do Windows para essas operações. Para obter mais informações sobre como carregar e baixar conteúdo, veja Como carregar um arquivo e Como baixar um arquivo. Para ver uma discussão geral sobre transferência em segundo plano, veja Transferring data in the background.
 

Como garantir que um WinJS.xhr reenvie as solicitações

Quando você solicita recursos da Web usando o WinJS.xhr, a resposta pode ser armazenada em cache, ou seja, solicitações posteriores retornam a versão do recurso que já existe no cliente em vez de reenviar a solicitação. No entanto, você pode adicionar um cabeçalho HTTP que garante que a solicitação seja enviada novamente, mesmo que já tenha sido armazenada em cache.

Definindo valores de tempo limite com WinJS.xhr ou HttpClient

Quando você usa XMLHttpRequest, pode definir valores de tempo limite diretamente, mas o mesmo não pode ser feito com o uso de Windows.Web.Http.HttpClient ou WinJS.xhr. Porém, existe uma maneira de definir tempos limite em objetos WinJS.Promise. Ao chamar WinJS.Promise.timeout, você garante que a solicitação será cancelada se não for concluída dentro do tempo especificado.

Como criar um mashup usando WinJS.xhr

Um mashup é um aplicativo Web que usa dados de duas ou mais fontes para criar algo novo. Este exemplo mostra como você pode usar o XMLHttpRequest (XHR) para recuperar e exibir um feed RSS (Really Simple Syndication) remoto.

 

Tópicos relacionados

Outros recursos

Declarações de funcionalidades do aplicativo

Resolvendo exceções em aplicativos de rede

Como configurar recursos de isolamento de rede

Como habilitar loopback e depurar o isolamento de rede

Referência

Windows.Foundation.Uri

Windows.Web.Http

Windows.Web.Http.Filters

Windows.Web.Http.Headers

Windows.Web.Http.HttpClient

WinJS.xhr

XMLHttpRequest

Exemplos

Amostra de HttpClient

Integrando conteúdo e controles da amostra de serviços Web

Usando um Blob para salvar e carregar exemplo de conteúdo

Exemplo de autenticação da Web

XHR, manipulando erros de navegação e exemplo de esquemas URL