Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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.