2
respostas

[Sugestão] Desafio viacep

Não consigo copiar aqui todo codigo devido a a limitação dos caracteres enviei somente alguns treços porem o codigo completo está no meu github

public class Endereco {
    private  String cep;
    private  String logradouro;
    private  String complemento;
    private  String localidade;
    private  String uf;
    private  String ibge;
    private  String gia;
    private  String ddd;
    private  String siafi;
    private  String bairro;
    public Endereco(PegarEndecoViaApi pegarEndecoViaApi) {
        this.cep =pegarEndecoViaApi.cep();
        this.logradouro = pegarEndecoViaApi.logradouro();
        this.complemento = pegarEndecoViaApi.complemento();
        this.localidade = pegarEndecoViaApi.localidade();
        this.uf = pegarEndecoViaApi.uf();
        this.bairro = pegarEndecoViaApi.bairro();
        this.ibge = pegarEndecoViaApi.ibge();
        this.gia = pegarEndecoViaApi.gia();
        this.ddd = pegarEndecoViaApi.ddd();
        this.siafi = pegarEndecoViaApi.siafi();
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }
    public void setCep(String cep) {
        this.cep = cep;
    }
    public String getLogradouro() {
        return logradouro;
    }
    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }
    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getLocalidade() {
        return localidade;
    }
    public void setLocalidade(String localidade) {
        this.localidade = localidade;
    }
    public String getUf() {
        return uf;
    }

    @Override
    public String toString() {
        return "{" +
                "cep='" + cep + '\'' +
                ", logradouro='" + logradouro + '\'' +
                ", complemento='" + complemento + '\'' +
                ", localidade='" + localidade + '\'' +
                ", uf='" + uf + '\'' +
                ", ibge='" + ibge + '\'' +
                ", gia='" + gia + '\'' +
                ", ddd='" + ddd + '\'' +
                ", siafi='" + siafi + '\'' +
                '}';
    }
}
package Estruturas.lukoki.ao;
public record PegarEndecoViaApi(String cep, String logradouro,String complemento,String bairro, String localidade,String uf, String ibge,String gia, String ddd,String siafi) {
}
public class Consumo {
    private HttpClient client;
    public Consumo() {
        this.client = HttpClient.newHttpClient();
    }
    public String consumindoApi(String link){
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(link)).build();
        try {
            HttpResponse<String> response = this.client.send(request, HttpResponse.BodyHandlers.ofString());
            if(response.statusCode()==200){
                return  response.body();
            }else{
                return null;
            }
        } catch (IOException | InterruptedException e) {
            throw new erroDeCoonsumo("Erro ao consumir");
        }
    }
    public PegarEndecoViaApi converterEmGson(String response){
        try {
            Gson gson = new Gson();
            return gson.fromJson(response,PegarEndecoViaApi.class);
        }catch (Exception e){
            return  null;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        int opcao;
        Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).setPrettyPrinting().create();
        Scanner leitura = new Scanner(System.in);
        List<Endereco> enderecos = new ArrayList<>();
        String cep;
                    System.out.println("PESQUISAR A LOCALIDADE POR CEP");
                    System.out.print("Digite o seu cep sem o simbolo de traço ");
                    cep = leitura.nextLine();
                    String link = "https://viacep.com.br/ws/"+cep+"/json/";
                    Consumo consumo = new Consumo();
                    try {
                        String response = consumo.consumindoApi(link);
                        PegarEndecoViaApi pegarEndecoViaApi = consumo.converterEmGson(response);
                        Endereco meuEndereco = new Endereco(pegarEndecoViaApi);
                        enderecos.add(meuEndereco);        
    system.out.println(meuEndereco)
     escrever = new FileWriter("endereco.json");
                        escrever.write(gson.toJson(enderecos));
                        escrever.close();
                    }catch (erroDeCoonsumo e){
                        System.out.println(e.getMessage());
                    }
}

2 respostas

Oi, dev! Tudo bem?

Seu código está bem estruturado e no caminho certo para consumir a API ViaCEP, converter a resposta em um objeto Java e gravar os dados em um arquivo JSON. Espero que esteja gostando do curso! Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Muito obrigado