• Categoria do post:Java - NetBeans
  • Tempo de leitura:4 minutos de leitura
Ads

Oi pessoal!

Publiquei recentemente o artigo Busca automática de CEP em C# – Windows Forms e também publiquei uma versão do código em jQuery, veja em Busca por CEP usando JQuery e jSon.

Agora chegou a vez dele, do Java! Ídolo de muitos, terror para alguns.

O código a seguir segue a mesma lógica e sintaxe do mesmo projeto que criei em C#. Iremos fazer a busca usando o webservice do site Via CEP que retorna uma saída jSON do resultado da busca. Um exemplo de resultado da saída pode ser visto acessando https://viacep.com.br/ws/12951231/json/.

Assim como no projeto em C# não irei utilizar nenhuma biblioteca ou classe para fazer a leitura jSON, irei utilizar REGEX (expressões regulares) para separar os valores da saída jSON.

Busca automática por CEP – Interface da aplicação Java

A interface é simples, vamos mostrar na tela os valores de cidade, logradouro, bairro e Estado.
Aplicação Java Busca Automática por cep

É importante nomear os jTextFields, aqui eu nomei-os respectivamente como;

  • jTxtCep
  • jTxtLogradouro
  • jTxtBairro
  • jTxtCidade
  • jTxtEstado

Agora vamos programar…

Código Java para busca automática de endereço consultando o CEP

No código fonte do seu formulário, crie os seguintes atributos;

String logradouro;      
String bairro;
String cidade;
String uf;

É importante saber aonde criar os atributos, eles devem ser adicionados logo no início da classe conforme mostra a imagem, supondo que meu jFrame chame JFrmBuscaCep:

busca por cep em java

Classe para Busca de CEP em Java

Agora, vamos acrescentar logo abaixo dos atributos a classe que escrevi, ela vai se conectar no webservice e separar os valores da saida jSon dentro de um vetor.

    public void buscarCep(String cep) 
    {
        String json;        

        try {
            URL url = new URL("http://viacep.com.br/ws/"+ cep +"/json");
            URLConnection urlConnection = url.openConnection();
            InputStream is = urlConnection.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));

            StringBuilder jsonSb = new StringBuilder();

            br.lines().forEach(l -> jsonSb.append(l.trim()));
            json = jsonSb.toString();
            
            // JOptionPane.showMessageDialog(null, json);
            
            json = json.replaceAll("[{},:]", "");
            json = json.replaceAll("\"", "\n");                       
            String array[] = new String[30];
            array = json.split("\n");
            
            // JOptionPane.showMessageDialog(null, array);
                             
            logradouro = array[7];            
            bairro = array[15];
            cidade = array[19]; 
            uf = array[23];
            
            jTxtLogradouro.setText(logradouro);
            jTxtBairro.setText(bairro);
            jTxtCidade.setText(cidade);
            jTxtEstado.setText(uf);
            //JOptionPane.showMessageDialog(null, logradouro + " " + bairro + " " + cidade + " " + uf);
            
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

Código do botão Localizar

O botão deve apenas chamar o método. Perceba que o método é parametrizado, ou seja, precisamos passar para o método qual é o CEP que o usuário digitou. O CEP se encontra no jTextField, bastando capturar o valor dele.

    buscarCep(jTxtCep.getText());

E se seu quiser buscar o CEP durante a digitação do usuário?

Neste caso, não precisaremos do botão, mas temos que checar quantos números o usuário digitou antes de executarmos o método buscarCep(), podemos resolver isso usando o length(). Dentro do evento KeyReleased do jTxtCep coloque;

jTxtLogradouro.setText("Aguarde...");
if (jTxtCep.getText().length() == 8)
{
   buscarCep(jTxtCep.getText());
}

O resultado será este (clique na imagem caso o GIF não execute automaticamente)

Busca por CEP em Java

Download da aplicação – Busca automática por CEP em JAVA

Como de praxe segue o projeto para download. Clique aqui

Ads

Anderson Oliveira

Anderson Oliveira é desenvolvedor, escritor e docente no CEETPS - Centro Estadual de Educação Tecnologia de São Paulo. Atualmente trabalha na Administração Central do CPS e leciona aulas de programação na Etec Prof. Carmine Biagio Tundisi de Atibaia.