Olá,
Segue minha resolução do desafio de acesso a API CEP, baseado nos conceitos e dicas utilizados pela professora.
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) throws IOException, InterruptedException {
Scanner scanner = new Scanner(System.in);
ConsultaCep consultaCep = new ConsultaCep();
System.out.println("Digite um número de CEp para consulta: ");
var cep = scanner.nextLine();
try {
Endereco novoEndereco = consultaCep.buscaEndereco(cep);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String enderecoJson = gson.toJson(novoEndereco);
System.out.println(enderecoJson);
GeradorArquivo geradorAquivo = new GeradorArquivo();
geradorAquivo.gerarArquivoJSON(novoEndereco, "endereco.json");
System.out.println("Dados do endereço salvos no arquivo endereço.");
} catch (RuntimeException | IOException | InterruptedException e) {
System.out.println(e.getMessage());
System.out.println("Finalizando a aplicação");
}
scanner.close();
}
}
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
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 ConsultaCep {
public Endereco buscaEndereco(String cep) throws IOException, InterruptedException {
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());
return new Gson().fromJson(response.body(), Endereco.class);
} catch (Exception e) {
throw new RuntimeException("Não consegui obter o endereço a partir desse CEP.");
}
}
}
public record Endereco(String cep, String logradouro,
String complemento, String bairro,
String localidade, String uf) {
}
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeradorArquivo {
public void gerarArquivoJSON(Object objeto, String nomeArquivo) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(objeto);
try (FileWriter writer = new FileWriter(nomeArquivo)){
writer.write(json);
}
}
}