1
resposta

[Projeto] Solução do Desafio Projeto Final do Curso

public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o CEP para consulta do endereço:");
        var cep = leitura.nextLine();

        // Instanciar a classe consultaCep
        ConsultaCep consultaCep = new ConsultaCep();

        // Lançar, Capturar e tratar exceções
        try {
            Endereco novoEndereco = consultaCep.buscaEndereco(cep);
            System.out.println(novoEndereco);
            GeraradorDeJson gerador = new GeraradorDeJson();
            gerador.salvarJson(novoEndereco);
            System.out.println("Verificar a criaçã do arquivo no menu do projeto.");

        } catch (RuntimeException | IOException e) {
            System.out.println(e.getMessage());
            System.out.println("Encerrando a aplicação!");
        }

    }
}
public class ConsultaCep {
    public Endereco buscaEndereco(String cep) {
        var buscarCep ="https://viacep.com.br/ws/" + cep + "/json/";


        // Lançar, Capturar e tratar exceções
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(buscarCep))
                    .build();

            HttpResponse<String> response = client
                    .send(request, HttpResponse.BodyHandlers.ofString());          
            String jeson = response.body();
            Gson gson = new GsonBuilder().create();
            EnderecoviaCep enderecoviaCep = gson.fromJson(jeson, EnderecoviaCep.class);
            Endereco endereco = new Endereco(enderecoviaCep);
            return endereco;          
          
        } catch (IOException | InterruptedException  e) {
            throw new RuntimeException("Não foi possível obter o endereço a partir do CEP informado!");
        }
    }
}

public class Endereco {
    private String cep;
    private String logradouro;
    private String complemento;
    private String localidade;
    private String uf;

    public Endereco(EnderecoviaCep enderecoviaCep) {
        this.cep = enderecoviaCep.cep();
        this.logradouro = enderecoviaCep.logradouro();
        this.complemento = enderecoviaCep.complemento();
        this.localidade = enderecoviaCep.localidade();
        this.uf = enderecoviaCep.uf();
    }
    public String getCep() {

        return cep;
    }

    public void setCep(String cep) {

        this.cep = cep;
    }

    public String getRua() {

        return logradouro;
    }

    public void setRua(String rua) {

        this.logradouro = logradouro;
    }

    public String getLocalidade() {

        return localidade;
    }

    public void setLocalidade(String localidade) {

        this.localidade = localidade;
    }

    public String getUf() {

        return uf;
    }

    public void setUf(String uf) {

        this.uf = uf;
    }

    @Override
    public String toString() {
        return "Endereco {" +
                "cep=" + cep +
                ", logradouro=" + logradouro +
                ", localidade=" + localidade +
                ", uf=" + uf +
                "}";
    }

public record EnderecoviaCep(String cep, String logradouro, String complemento, String localidade, String uf) {

}
public class GeraradorDeJson {
    public void salvarJson(Endereco endereco) throws IOException {

        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        FileWriter writer = new FileWriter(endereco.getCep()+  ".json");
        writer.write(gson.toJson(endereco));

        writer.close();
    }

}
1 resposta

Oii Everaldo, como vai você? Espero que esteja bem!

Fico feliz em ver que se empenhou no desafio, mandou muito bem! Continue se dedicando aos estudos e colocando em prática seus aprendizados.

Caso surjam dúvidas, fico á disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software