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.
} catch (IOException ex) {
Logger.getLogger(Cep.class.getName()).log(Level.SEVERE, null, ex);
}
}
}).start();
}
Link com o projeto :
Video do projeto em funcionamento :

