Consumindo uma API de maneira simples com Java

Arthur dos Santos Almeida
4 min readMar 17, 2020

--

Olá, hoje vou mostrar pra você como consumir uma API de maneira bem simples utilizando o Java, a ideia é construir um software onde o usuário informe seu CEP e mostramos na tela os dados de endereço, para isto vamos usar o webservice viacep.

É interessante saber que, se você colocar na barra de pesquisa do seu navegador “ https://viacep.com.br/ws/SEU-CEP/json/” e substituir o “SEU-CEP” na URL pelo CEP da sua casa, vai aparecer na tela um JSON, com propriedades e valores, mostrando seus dados de endereço, como o exemplo abaixo:

Exemplo de resposta

Sabendo disso, nossa missão é, através do Java, enviar uma requisição para essa URL do viacep e pegar essa resposta, então vamos começar.

Primeiramente precisamos de uma classe que represente os dados que queremos como resposta, o viacep trás no JSON diversas propriedades, mas nós queremos mostrar apenas logradouro, bairro e localidade, então criei uma classe Endereco com estes atributos conforme imagem abaixo.

Agora precisamos criar um main, pra poder pegar o CEP do usuário

Resumidamente:

  • Na linha 10 pedimos para o usuário informar o CEP
  • Linha 11 nós armazenamos o que foi digitado pelo usuário em uma variável
  • Na linha 12 eu criei um objeto do tipo Endereco, esse objeto vai receber o retorno do método “buscaEnderecoPelo(cep), para isso precisamos passar o cep que o usuário informou como parâmetro.
  • Nas próximas linhas eu apenas exibo na tela a resposta.

Acompanhe abaixo a classe chamada ServicoDeCep

Explicação:

A URL do webservice sempre será a mesma “http://viacep.com.br/ws/”, então decidi armazenar isso em uma String estática na linha 13.

Para cada requisição que fazemos, o HTTP nos retorna um código de resposta, se a requisição foi feita com sucesso, ele nos retorna o código 200, se ouve falha na requisição, por exemplo: Informamos um CEP inválido, o HTTP nos retorna o código 404 (NOT FOUND), que com certeza você já deve ter ouvido falar, bom, sabendo disto, eu criei uma variável estática códigoSucesso e atribui o valor 200 para ela, na linha 14.

Agora vamos implementar o método buscaEnderecoPelo(String cep), na linha 17 eu criei uma String urlParaChamada que recebe o valor de webservice + o cep que recebemos como parâmetro + “/json”, como vimos lá em cima, precisamos enviar esta URL para receber o JSON de resposta.

Na linha 20 criei um objeto url do tipo URL e passei a String urlParaChamada que montamos.

Na linha 21 eu criei um objeto conexao do tipo HttpURLConnection e fiz a requisição pro webservice passando a url.

Uma vez que a requisição foi feita, precisamos conferir se foi feita com sucesso, isso é verificado na linha 23, se o código de resposta por diferente de 200, eu já disparo um erro e finalizo o programa.

Caso contrário, na linha 26 eu crio um objeto resposta do tipo BufferedReader, esse objeto recebe conexao.getInputStream().

O método getInputStream() nos retorna aquele JSON de resposta que contem os dados de endereço.

Perfeito, já temos o JSON de resposta, agora precisamos converter esse JSON em uma String, isso é feito na linha 27, eu passo o JSON como parâmetro no método “converteJsonEmString()e esse método me retorna uma String, abaixo vou deixar a implementação da Classe.

Agora que já temos o jsonEmString, precisamos pegar os dados de endereço que vieram no JSON e atribuir em um objeto do tipo Endereço, mas para isso vamos utilizar uma biblioteca do Google chamada Gson, você vai precisar fazer download desse .jar e importar para o seu projeto, clique neste link para realizar o download.

Voltando a classe ServicoDeCep, o método “gson.fromJson()” que estamos utilizando na linha 30 funciona da seguinte maneira

Ele pega as propriedades do JSON e atribui automaticamente para os atributos da classe Endereco (mas para isso os atributos precisam estar escritos da mesma forma), por isso esse método espera como parâmetro o próprio JSON em String e a classe Endereco.

Aí na linha 30 nós criamos um objeto do tipo Endereco, esse objeto recebe o retorno do método gson.fromJson(), que vai fazer toda amarração que vimos na imagem acimae nos devolver o endereco com todos atributos preenchidos com logradouro, bairro e localidade, depois isso apenas retornamos o objeto endereco para o main, que irá exibir os atributos na tela.

Até a próxima :D

Baixe o projeto completo neste link: https://drive.google.com/file/d/1-Rk8ounu4V495i8VSxgkk4VJ5_Zm760L/view

--

--

Arthur dos Santos Almeida
Arthur dos Santos Almeida

Written by Arthur dos Santos Almeida

Especialista em Engenharia de Software | Entusiasta da Teologia | Interessado na discussão sobre tecnologia e seus impactos na sociedade

Responses (10)