1
resposta

Duvidas e ajudas

Como faco consultas por endereco e nao via cep no viacep usando esse mesmo projeto??? alguem p me instruir e me ajudar e indicar conteudos p me ajudar a fazer isso

1 resposta

Olá, Renata!

Entendo que você gostaria de fazer consultas por endereço e não por CEP na API ViaCEP. No entanto, o projeto que você está seguindo foi desenvolvido para fazer consultas por CEP.

A API ViaCEP também permite consultas por endereço, mas para isso você precisará fazer algumas alterações no seu código. A URL para consulta por endereço é um pouco diferente, segue o formato: https://viacep.com.br/ws/UF/CIDADE/LOGRADOURO/json/.

Então, no seu código, você precisará modificar a URI para seguir esse formato. Além disso, você precisará alterar o método buscaEndereco para aceitar três parâmetros (UF, cidade e logradouro) em vez de apenas o CEP.

Aqui está um exemplo de como o código modificado poderia ficar:

public class ConsultaEndereco {

    public Endereco buscaEndereco(String uf, String cidade, String logradouro) {
        URI endereco = URI.create("https://viacep.com.br/ws/" + uf + "/" + cidade + "/" + logradouro + "/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 desses dados.");
        }

    }
}

E na classe Principal você irá precisar solicitar os dados de UF, cidade e logradouro ao usuário, em vez do CEP:

public class Principal {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        ConsultaEndereco consultaEndereco = new ConsultaEndereco();

        System.out.println("Digite a UF para consulta:");
        var uf = leitura.nextLine();
        System.out.println("Digite a cidade para consulta:");
        var cidade = leitura.nextLine();
        System.out.println("Digite o logradouro para consulta:");
        var logradouro = leitura.nextLine();
                
        try {
            Endereco novoEndereco = consultaEndereco.buscaEndereco(uf, cidade, logradouro);
            System.out.println(novoEndereco);
        } catch (RuntimeException | IOException e) {
            System.out.println(e.getMessage());
            System.out.println("Finalizando a aplicação");
        }

    }
}

Lembre-se que essa é apenas uma sugestão de como você pode adaptar o seu projeto para fazer consultas por endereço na API ViaCEP.

Bons estudos!