Xamarin Forms - Consumindo uma Web API ASP .NET com HttpClient


Neste artigo vou mostrar como criar e consumir uma Web API ASP .NET em uma aplicação Xamarin Forms usando o HttpCliente com o Visual Studio 2015 e a linguagem C#.

Esse é um artigo essencialmente prático que mostrar como criar , hospedar e consumir uma Web API ASP .NET em uma aplicação Xamarin Forms usando o HttpClient.

Para poder acompanhar o artigo você tem que ter noções de Web API, REST,  HttpClient, Xamarin Forms. Eu não vou entrar em detalhes desses pré-requisitos mas vou deixar o link onde você vai poder acessar e se inteirar sobre o conteúdo exigido.  Seguem abaixo os links:

Dessa forma, se você tem dúvidas sobre os requisitos mencionados, sugiro que leia os artigos acima.

Vamos dividir as tarefas que vamos realizar em 3 tópicos :

  1. Criar uma Web API ASP .NET

  2. Fazer o deploy do projeto

  3. Criar uma aplicação Xamarin Forms para consumir a Web API

1 - Criando um Web API  ASP .NET

A criação da WEB API ASP .NET pode ser vista neste artigo :   ASP .NET Web API - Consumindo uma Web API em um ... - Macoratti

Basta ler somente a primeira parte onde criamos a Web API. Note que estamos criando um projeto separado usando o template Web API/MVC.

Esta Web API é quem vai expor os serviços para atualizar as informações dos Produtos que estaõ sendo representados pela classe Produto:

Produto.cs

 public class Produto
    {
        public int Id { get; set; }
        public string Nome { get; set; }
        public string Categoria { get; set; }
        public decimal Preco { get; set; }
    }

Para tornar o exemplo mais simples, não estou usando um banco de dados, mas, estou definindo os dados em um repositório, na classe ProdutoRepositorio,  conforme mostrado no trecho de código a seguir:

ProdutoRepositorio.cs

        .....
        private List<Produto> produtos = new List<Produto>();
        private int _nextId = 1;
        public ProdutoRepositorio()
        {
            Add(new Produto { Nome = "Guaraná Antartica", Categoria = "Refrigerantes", Preco = 4.59M });
            Add(new Produto { Nome = "Suco de Laranja Prats", Categoria = "Sucos", Preco = 5.75M });
            Add(new Produto { Nome = "Mostarda Hammer", Categoria = "Condimentos", Preco = 3.90M });
            Add(new Produto { Nome = "Molho de Tomate Cepera", Categoria = "Condimentos", Preco = 2.99M });
            Add(new Produto { Nome = "Suco de Uva Aurora", Categoria = "Sucos", Preco = 6.50M });
            Add(new Produto { Nome = "Pepsi-Cola", Categoria = "Refrigerantes", Preco = 4.25M });
        }
        ....

Dessa forma teremos uma lista de produtos em memória que poderemos consumir selecionando, alterando, incluindo e excluindo informações de produtos via Xamarin Forms.

2 - Fazer o deploy do projeto

Com a Web API pronta temos que publicar o projeto em um servidor de hospedagem para que possamos fazer o acesso remoto usando o HttpClient e assim consumir a web API.

Neste momento você pode publicar a web api em qualquer servidor com suporte hospedagem ASP .NET ou publicar na nuvem usando um serviço Azure, Amazon, etc...

Neste artigo eu vou usar o servidor de hospedagem gratuíta Somee.com.

A primeira coisa a fazer é acessar o site Somee.com e criar uma nova conta free. Para isso acesso site e clique em Free .Net Hosting :

A seguir clique no botão Order now para Free Hosting package :

Na próxima janela clique em : Checkout

Preencha o formulário para registrar sua conta fornecendo os seus dados e clique no botão Register new Account.

Você vai receber um número para confirmar o seu registro no seu email e deve informar esse número para concluir o processo de criação da conta.

Após concluir essa etapa com sucesso você terá acesso ao seu painel de controle que será usado para fazer o deploy da web api:

A seguir clique na guia WebSites e informe o nome do domínio que será usado para acessar o seu website o sistema operacional e a versão da ASP .NET que você vai usar.

Para o exemplo eu criei o subdominio: macwebapi.somee.com

Informe o título e a descrição e clique no botão - Create website. Pronto seu site esta pronto para receber o deploy do projeto Web API.

Vamos fazer o deploy do projeto web API para o site criado.

Antes vamos até a pasta onde criamos o projeto web api e vamos gerar um arquivo ZIP da pasta onde criamos a nossa solução.

No exemplo a web api foi criada na pasta WebApi2_Produtos e assim geramos o arquivo WebApi2_Produtos.zip contendo todos os arquivos da solução criada.

Este arquivo será enviado para o deploy no site.

Clique na opção File Manager para abrir a janela onde podemos enviar e gerenciar os arquivos.

A seguir clique em Selecionar arquivo e selecione o arquivo WebApi2_Produtos.zip e clique no link - Upload and Unzip archives :

Ao final do processo o arquivo será enviado para o servidor e descompactado. Neste momento você deverá mover os arquivos da pasta WeApi2_Produtos para a raiz do site de forma a obter o seguinte resultado no gerenciador de arquivos:

Nota:  O procedimento feito nessa etapa pode variar, e vai depender de como você estruturou sua aplicação ASP .NET.

Agora basta digitar no navegador : macwebapi.somee.com/api/produtos para obter o retorno no formato JSON da nossa lista de produtos:

E assim estamos prontos para consumir a  nossa web api que agora esta atendendo no servidor remoto.

Na próxima parte do artigo iremos criar a aplicação Xamarin Forms que vai consumir os serviços dessa Web API via HttpClient.

Pegue o projeto da web api aqui :   WebApi2_Produtos.zip (sem as referências)

Todas as coisas são puras para os puros, mas nada é puro para os contaminados e infiéis; antes o seu entendimento e consciência estão contaminados.
Confessam que conhecem a Deus, mas negam-no com as obras, sendo abomináveis, e desobedientes, e reprovados para toda a boa obra.

Tito 1:15,16

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti