O Windows Phone 8 está fenomenal, com cada vez mais recursos e aplicativos. Eu sou um usuário hardcore e considero este o sistema operacional mais estável para mobile. Um app mobile precisa acessar o mundo externo de alguma forma, seja para consultar dados em um serviço ou mesmo enviar informações que serão persistidas em algum lugar. Pensando nisso, foi criado o HttpClient, que facilita a vida de quem precisa acessar Http, como Windows Azure Mobile Services ou consumir Restful services feitos em Web API, por exemplo.
Instalando o HttpClient
O HttpClient está localizado no assembly System.Net.Http.dll e pode ser instalado via Nuget:- Acesse o Nuget Package Manager para instalar um novo pacote.
- Procure pelo pacote Microsoft.Net.Http, ele aparecerá como a primeira opção.
- Dê dois cliques para instalar o pacote.
Package HttpClient |
Com este pacote já é possível usar a classe em sua aplicação, mas com um porém, os métodos dessa classe no WP8 não tem acesso a 100% dos recursos async, o que nos leva a outro passo :).
Instalando o Microsoft Async
Para que os projetos WP8 façam uso de async/await é necessário instalar um pacote Nuget que adiciona métodos extendidos para os tipos que acessam recursos de rede, como por exemplo, o HttpClient.
Para instalar o Microsoft Async:
- Acesse o Nuget Package Manager para instalar um novo pacote.
- Procure pelo pacote Microsoft Async, ele aparecerá como a primeira opção.
- Dê dois cliques para instalar o pacote.
Package com extension method para networking types |
Com esse pacote instalado é possível usar o HttpClient com todos os recursos modernos fornecidos pelo .NET.
Exemplo simples de uso do HttpClient
Para usar o HttpClient adicione a referência em sua classe para System.Net.Http. No exemplo abaixo, existe um simples botão, que faz uma chamada Http e coloca o body da request em um textbox.
private async void Button_Click(object sender, RoutedEventArgs e) { HttpClient client = new HttpClient(); try { HttpResponseMessage response = await client.GetAsync("http://www.google.com/"); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); this.txtResponse.Text = responseBody; } catch (HttpRequestException ex) { throw ex; } }
Código do evento do botão |
Como a requisição é para www.google.com, a resposta será o HTML da página, como pode ser visto no textbox:
Textbox é preenchido com o resultado da requisição |
Finalizando
O HttpClient está estável e muito fácil de usar. Um problema que tive durante os testes foi a falta de conexão com a internet no emulador do Windows Phone 8 que resolvi usando este post do stackoverflow:
Para maiores referências de como usar o HttpClient nas sua aplicações, um bom lugar para começar é o link abaixo:Espero que tenham gostado da dica. Bom final de semana para todos!