segunda-feira, 22 de setembro de 2014

Buscando endereço pelo cep com Java

Fala galera , hoje vou ensinar como buscar um endereço por um cep válido com o Java utilizando uma conexão com a internet e uma biblioteca chamada : JSoup.

1º Passo  :

Vamos criar um projeto com o nome BuscaCep e inserir a biblioteca JSoup 1.7.2 nele, no exemplo eu estou utilizando a IDE Netbeans, mas pode ser feito em qualquer IDE ou até mesmo pelo notepad++ ou notepad.
2º Passo :

Vamos modelar a classe dessa forma : 

3º Passo : 

Vamos entender como funcionara o projeto : 

O usuário digita o número do cep e o sistema faz uma requisição para o site : qualocep.com.br
passando o cep como parâmetro, assim fazendo o site retornar o endereço do cep, sendo esse válido.

A biblioteca JSoup funcionará como um intermediário nesse processo facilitando muito o nosso processo, ela irá varrer os elementos html do site interceptando os dados em que estamos solicitando via seus "id's" e classes.

4ºPasso : 

Vamos criar nosso método responsável pela requisição :




Temos um método estatico chamado buscaCep que recebe uma String com o cep que iremos utilizar
para recuperar o endereço. 

Iremos fazer uma instancia de Cep chamada insCep e iremos recuperar um documento html com 
a biblioteca JSoup , acessaremos ela por método estático passaremos o endereço como parâmetro e setamos um agente de uso "UserAgent" que simula um navegador, para camuflar nosso acesso, e utilizamos get para recuperar os dados.

Iremos buscar pelo atributo da tag itemprop os valores correspondentes do site, assim retornando os valores desejados.

O que o site retorna : 

<span itemprop="streetAddress"> Rua Júlio Conceição - lado ímpar</span>

Como Capturamos : 

documento.getElementsByAttributeValue("itemprop", "streetAddress").text();


onde documento representa nossa pagina html inteira, utilizaremos o metodo :

getElementsByAttributeValue(String,String);

que ira buscar dentro do documento html a tag chamada itemprop e que contenha streetAdrresse utilizamos o método text para retornar o valor dela, semelhante a uma sobrecarga de toString.Faremos isso assim sucessivamente. Porém para capturarmos o bairro, iremos fazer o seguinte : 

insCep.bairro = documento.getElementsByTag("td").get(2).text();

Iremos procurar por uma tag td no nosso documento html, no caso a do bairro é a segunda, então enviamos um inteiro com valor 2 para esse objeto que implementa list e utilizamos o método get para recebermos o objeto, e utilizamos o nosso conhecido método text.


um exemplo para buscar um bairro pelo método estatico : 

          new Thread(new Runnable(){

              @Override
              public void run() {
                  try {
                      // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                      System.out.println(Cep.buscaCep("01126001").getBairro());
                  } catch (IOException ex) {
                      Logger.getLogger(Cep.class.getName()).log(Level.SEVERE, null, ex);
                  }
              
              }
          
          
          }).start();
            
           
        } 

Link com o projeto :



Video do projeto em funcionamento : 










Nenhum comentário:

Postar um comentário