Pessoal, realizei o desafio, porém não estou conseguindo passar as informações da API para JSON e posteriormente para o TXT.
Classe main
import Models.buscadorCep;
import Utils.ConexaoHttp;
import Utils.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner readLine = new Scanner(System.in);
String busca = "";
ArrayList<buscadorCep> cepList = new ArrayList<>();
while (!busca.equalsIgnoreCase("sair")) {
ConexaoHttp conexao = new ConexaoHttp();
System.out.println("Digite um CEP para buscar: ");
conexao.setEndereco(readLine.nextLine());
if (conexao.getEndereco().equalsIgnoreCase("https://viacep.com.br/ws/sair/json/")) {
break;
}
System.out.println(conexao.getEndereco());
conexao.acessarSite();
}
}
}
Classe de Conexão a API
package Utils;
import Models.buscadorCep;
import Models.CepAPI;
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 ConexaoHttp extends Gson {
private String endereco;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = "https://viacep.com.br/ws/" + endereco + "/json/";
}
public void acessarSite(){
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endereco))
.build();
HttpResponse<String> response = null;
try {
response = client
.send(request, HttpResponse.BodyHandlers.ofString());
} catch (IOException | InterruptedException e) {
throw new RuntimeException("Não foi possivel encontrar esse CEP");
}
String json = response.body();
System.out.println(json);
CepAPI meuCepApi = gson.fromJson(json, CepAPI.class);
System.out.println(meuCepApi);
buscadorCep meuCep = new buscadorCep(meuCepApi);
System.out.println("Cep já convertido");
System.out.println(meuCep);
}
}
Classe de buscadorCep
package Models;
public class buscadorCep implements Comparable<buscadorCep> {
private String cep;
private String logradouro;
private String complemento;
private String bairro;
private String localidade;
private String uf;
public String getCep() {
return cep;
}
public buscadorCep(CepAPI meuCepApi){
this.cep = meuCepApi.cep();
this.logradouro = meuCepApi.logradouro();
this.complemento = meuCepApi.complemento();
this.bairro = meuCepApi.bairro();
this.localidade = meuCepApi.localidade();
this.uf = meuCepApi.uf();
}
@Override
public String toString() {
return "Cep{" +
"cep='" + cep + '\'' +
", logradouro='" + logradouro + '\'' +
", complemento='" + complemento + '\'' +
", bairro='" + bairro + '\'' +
", localidade='" + localidade + '\'' +
", uf='" + uf + '\'' +
'}';
}
@Override
public int compareTo(buscadorCep outroCep) {
return this.getCep().compareTo(outroCep.getCep());
}
}
Classe Record CepAPI
package Models;
public record CepAPI(String cep, String logradouro, String complemento, String bairro, String localidade, String uf) {
}
Classe GSON
package Utils;
import Models.CepAPI;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class Gson {
com.google.gson.Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy
.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.create();
public void salvarArquivo(List lista) throws IOException {
FileWriter escrita = new FileWriter("Cep.json");
escrita.write(gson.toJson(lista));
escrita.close();
}
}