1
resposta

[Projeto] BuscaCep.java

Necessário baixar o arquivo gson-2.10.1.jar

a partir de um CEP de 8 dígitos, o código retornará demais detalhes sobre o endereço.

principal.java

package br.com.meuprojeto.buscacep;

import java.io.IOException;
import java.util.Scanner;


public class Principal {
    public static void main(String[] args) {

        ConsultarCep consultarCep = new ConsultarCep();

        try (Scanner entrada = new Scanner(System.in)) {

            System.out.println("Insira o número do CEP para continuar:");
            String cep = entrada.nextLine().trim();

            // Validação simples do CEP (8 dígitos numéricos)
            if (!cep.matches("\\d{8}")) {
                System.out.println("CEP inválido. Informe um CEP com 8 dígitos numéricos.");
                return;
            }

            Endereco novoEndereco = consultarCep.buscaEndereco(cep);
            System.out.println(novoEndereco);

            GeradorDeArquivo gerador = new GeradorDeArquivo();
            gerador.geradorJson(novoEndereco);

        } catch (RuntimeException | IOException e) {
            System.out.println("Erro: " + e.getMessage());
            System.out.println("A aplicação foi encerrada.");
        }

    }
}

Endereco.java

package br.com.meuprojeto.buscacep;

public record Endereco(String cep, String logradouro,
                       String bairro, String localidade, String uf) {
}

GeradorDeArquivo.java

package br.com.meuprojeto.buscacep;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.FileWriter;
import java.io.IOException;

public class GeradorDeArquivo {
    public void geradorJson(Endereco endereco) throws IOException {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String nomeArquivo = endereco.cep() + ".json";

        try (FileWriter escrita = new FileWriter(nomeArquivo)) {
            escrita.write(gson.toJson(endereco));
        }

        System.out.println("Arquivo JSON gerado com sucesso: " + nomeArquivo);
    }
}

ConsultarCep.java

package br.com.meuprojeto.buscacep;

import com.google.gson.Gson;

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 ConsultarCep {
    public Endereco buscaEndereco(String cep) {
        URI endereco = URI.create("https://viacep.com.br/ws/" + cep + "/json");

        HttpRequest request = HttpRequest.newBuilder()
                .uri(endereco)
                .build();

        try {
            HttpResponse<String> response = HttpClient
                    .newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());

            String json = response.body();

            // Verifica se o CEP não foi encontrado
            if (json.contains("\"erro\": true")) {
                throw new RuntimeException("CEP não encontrado: " + cep);
            }

            return new Gson().fromJson(json, Endereco.class);

        } catch (IOException | InterruptedException e) {
            throw new RuntimeException("Erro inesperado ao consultar o CEP: " + cep, e);
        }
    }
}

1 resposta

Parabéns, Nicholas!