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
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!
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
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!