Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Buscador de CEP

package br.com.buscadorcep.modelo;

public record ViaCep(String logradouro, String bairro, String localidade, String uf) {
}
package br.com.buscadorcep.modelo;

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

    public Endereco(String cep, ViaCep viaCep) {
        this.cep = cep;
        this.logradouro = viaCep.logradouro();
        this.bairro = viaCep.bairro();
        this.localidade = viaCep.localidade();
        this.uf = viaCep.uf();
    }

    @Override
    public String toString() {
        return """
                CEP: %s
                Rua: %s
                Bairro: %s
                Cidade: %s
                Estado: %s
                """.formatted(cep, logradouro, bairro, localidade, uf);
    }
}
package br.com.buscadorcep.principal;

import br.com.buscadorcep.modelo.Endereco;
import br.com.buscadorcep.modelo.ViaCep;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;

import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Principal {
    public static void main(String[] args) throws IOException, InterruptedException {

        Scanner leitura = new Scanner(System.in);
        String cepDigitado = "";

        List<Endereco> enderecos = new ArrayList<>();

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

        while (true) {

            System.out.println("Digite o CEP para consulta ou sair para encerrar: ");
            cepDigitado = leitura.nextLine().trim();

            if (cepDigitado.equalsIgnoreCase("sair")) {
                break;
            }

            String endereco = "https://viacep.com.br/ws/" + cepDigitado + "/json/";

            try {

                HttpClient client = HttpClient.newHttpClient();
                HttpRequest request = HttpRequest.newBuilder()
                        .uri(URI.create(endereco))
                        .build();

                HttpResponse<String> response = client
                        .send(request, HttpResponse.BodyHandlers.ofString());

                String json = response.body();

                if (json.contains("\"erro\":true")) {
                    System.out.println("CEP não encontrado ou inválido.");
                    continue;
                }

                ViaCep dadosDoCep = gson.fromJson(json, ViaCep.class);

                Endereco meuEndereco = new Endereco(cepDigitado, dadosDoCep);
                System.out.println("CEP encontrado: ");
                System.out.println(meuEndereco);

                enderecos.add(meuEndereco);

            } catch (JsonSyntaxException e) {
                System.out.println("Não foi possível converter a resposta em JSON.");
            } catch (IllegalArgumentException e) {
                System.out.println("Erro de argumento.");
            } catch (IOException | InterruptedException e) {
                System.out.println("Erro de comunicação ou interrupção: Falha na rede ou na requisição.");
            }
        }

        System.out.println(enderecos);

        FileWriter escrita = new FileWriter("enderecosbuscados.json");
        escrita.write(gson.toJson(enderecos));
        escrita.close();

    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi, Aline! Tudo certo?

Seu código ficou super profissional. Adorei a forma como você estruturou!

Parabéns demais pela solução, ficou completa e muito bem-feita!

Bons estudos!

Sucesso

Imagem da comunidade