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.
É 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:
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)
Download da aplicação – Busca automática por CEP em JAVA
Como de praxe segue o projeto para download. Clique aqui