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