Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Meu código

Como havia tentado fazer antes com outras ideias, meu código ficou assim, depois de também aproveitar algumas dicas desta aula e adaptar ao que eu já tinha feito anteriormente.

package br.com.alexrribeiro.buscacep.programa;

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;
import java.util.Scanner;

public class BuscaCEP {
    Scanner sc = new Scanner(System.in);
    private String cepDigitado;

    public Endereco recebeCep(String cepDigitado) {
        Endereco enderecoBuscado;
        this.cepDigitado = cepDigitado
                .replace("-","")
                .replace(".","");

        if (verificaCep()) {
            enderecoBuscado = conectaApi();
        } else {
            System.out.println("O CEP digitado não é válido.");
            enderecoBuscado = null;
        }

        return enderecoBuscado;
    }

    private boolean verificaCep() {
        if (cepDigitado.matches("[0-9]{8}")) {
            return true;
        }
        return false;
    }

    private Endereco conectaApi() {
        String json = null;
        try {
            String endereco = String.format("https://viacep.com.br/ws/%s/json/", cepDigitado);

            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(endereco))
                    .build();
            HttpResponse<String> response = client
                    .send(request, HttpResponse.BodyHandlers.ofString());
            json = response.body();
        } catch (IOException | InterruptedException e) {
            throw new RuntimeException("Não foi possível obter o endereço a partir desse CEP.");
        } catch (Exception e) {
            System.out.println("Alguma coisa deu errado. =/");
        }
        
        Endereco resultado = new Gson().fromJson(json, Endereco.class);
        return resultado;
    }
}

Apesar de não estar tão bom quanto o da aula, está funcionando. E, no caso de formatos de CEP diferentes (menos dígitos ou alfanuméricos), retornando uma mensagem de CEP inválido. Também imaginando que uma pessoa poderia colocar pontos ou traços ao informar um CEP, deixei replaces para esses dois casos.

1 resposta
solução!

Oi Alex, tudo bem?

Muito obrigada por compartilhar com a gente a solução que encontrou! Parabéns pela dedicação, ficou muito boa :)

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software