//Classe Principal
import cepConexao.RequisicaoCep;
import modelos.EnderecoOBJ;
import modelos.GeradorJson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
RequisicaoCep requisicaoCep = new RequisicaoCep();
Scanner leitura = new Scanner(System.in);
String cep = "";
List<EnderecoOBJ> enderecoOBJList = new ArrayList<>();
GeradorJson geradorJson = new GeradorJson();
while (!cep.equalsIgnoreCase("sair")){
System.out.println("Digite CEP para ser pesquisado(se desejar parar o programa digite sair): ");
cep = leitura.nextLine();
if (cep.equalsIgnoreCase("sair")){
System.out.println("Finalizando Programa.");
geradorJson.gerarJson(enderecoOBJList);
break;
}
try {
EnderecoOBJ enderecoOBJ = new EnderecoOBJ(requisicaoCep.buscaCEP(cep));
enderecoOBJList.add(enderecoOBJ);
System.out.println(enderecoOBJ+"\n");
} catch (IOException|InterruptedException e) {
System.out.println("Não foi possivel realizar a Conexão.");
throw new RuntimeException(e);
}
}
}
}
//Conexão e Tratamento de Exceção:
package cepConexao;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import modelos.EnderecoReco;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class RequisicaoCep {
public EnderecoReco buscaCEP(String cep) throws IOException, InterruptedException {
Gson gson = new GsonBuilder().setPrettyPrinting().
create();
EnderecoReco endereco = null;
URI enderecoApi = URI.create("https://viacep.com.br/ws/"+cep+"/json/");
HttpRequest request = HttpRequest.newBuilder()
.uri(enderecoApi)
.build();
HttpResponse<String> response = HttpClient.newHttpClient().
send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
try {
endereco = gson.fromJson(json, EnderecoReco.class);
}catch (JsonSyntaxException e){
throw new CepErradoExcecao("Não localizei o CEP, finalizando o Programa.");
}
return endereco;
}
}
package cepConexao;
public class CepErradoExcecao extends RuntimeException {
public CepErradoExcecao(String mensagem) {
super(mensagem);
}
}
//Endereço Objeto e Record
package modelos;
public class EnderecoOBJ {
private String cep;
private String logradouro;
private String bairro;
private String localidade;
private String uf;
private String complemento;
public EnderecoOBJ (EnderecoReco enderecoReco){
this.cep = enderecoReco.cep();
this.logradouro = enderecoReco.logradouro();
this.bairro = enderecoReco.bairro();
this.localidade = enderecoReco.localidade();
this.uf = enderecoReco.uf();
this.complemento = enderecoReco.complemento();
}
@Override
public String toString() {
return "Endereço: " + "cep= " + cep + ", logradouro= " + logradouro + ", bairro= " + bairro + ", localidade= " + localidade + ", uf= " + uf+
", complemento= " + complemento ;
}
}
package modelos;
public record EnderecoReco(String cep, String logradouro, String bairro, String localidade, String uf
, String complemento) {
}
//Gerador Json
package modelos;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class GeradorJson {
public void gerarJson(List<EnderecoOBJ> enderecoOBJ) {
Gson gson = new GsonBuilder().setPrettyPrinting().
create();
try {
FileWriter escrita = new FileWriter("CEPS.json");
escrita.write(gson.toJson(enderecoOBJ));
escrita.close();
System.out.println("Json gerado com sucesso");
} catch (IOException e) {
System.out.println("Não Foi possivel gerar o Json!");
throw new RuntimeException(e);
}
}
}