0
respostas

Resolução do Desafio

Principal:

import java.util.InputMismatchException;
import java.util.Scanner;

public class Principal {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int cep = 0;

        try {
            System.out.print("Digite seu CEP: ");
            cep = sc.nextInt();

            ViaCEP viaCep = new ViaCEP(cep);
            viaCep.procurar();
            viaCep.mostrarJson();

        } catch (InputMismatchException e) {
            System.err.println("Erro: CEP inválido. Digite apenas números.");
        }

        sc.close();
    }
}

ViaCep:

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

import java.io.BufferedReader;
import java.io.FileReader;
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;

public class ViaCep {
    private static final String BASE_URL = "https://viacep.com.br/ws/";
    private final int cep;
    private final Gson gson;

    public ViaCep(int cep) {
        this.cep = cep;
        this.gson = new GsonBuilder().setPrettyPrinting().create();
    }

    public void procurar() {
        String url = BASE_URL + cep + "/json/";

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

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

            Object jsonObject = gson.fromJson(response.body(), Object.class);

            try (FileWriter fileWriter = new FileWriter("Cep.json")) {
                fileWriter.write(gson.toJson(jsonObject));
                System.out.println("Dados salvos em Cep.json.");
            }

        } catch (Exception e) {
            System.err.println("Erro ao consultar o CEP: " + e.getMessage());
            Thread.currentThread().interrupt();
        }
    }

    public void mostrarJson() {
        try (BufferedReader reader = new BufferedReader(new FileReader("Cep.json"))) {
            StringBuilder conteudo = new StringBuilder();
            String linha;
            while ((linha = reader.readLine()) != null) {
                conteudo.append(linha);
            }

            Object jsonObject = gson.fromJson(conteudo.toString(), Object.class);
            String jsonFormatado = gson.toJson(jsonObject);

            System.out.println("Conteúdo do Cep.json:");
            System.out.println(jsonFormatado);

        } catch (IOException e) {
            System.err.println("Erro ao ler o arquivo Cep.json: " + e.getMessage());
        }
    }
}

Matricule-se agora e aproveite até 50% OFF

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

QUERO APROVEITAR