[RESOLVIDO] Erro ao consumir API usando o Resttemplate
14 respostasResolvido
restjavaspring
S
Silas_Fernandes
Boa tarde pessoal, sou iniciante na programação java e estou tentando consumir uma api simples que eu mesmo criei utilizando o resttemplate do spring, a api em questão seria só um serviço para buscar no banco de dados um campo de ano_nascimento, caso a busca retorne algum ano de nascimento igual ao que for passado eu quero que seja retornado apenas a idade calculada com base no ano encontrado, caso não ache nada retornar apenas um 0.
publicstaticvoidbuscaPeloAno(){Map<String,String>param=newHashMap<>();param.put("anoNascimento","2005");System.out.println(param.put("anoNascimento","1995"));Clientecliente=restTemplate.getForObject(BUSCA_PELO_ANO,Cliente.class,param);System.out.println(cliente);if(cliente.getAnoNascimento()=="0"){System.out.println("Ano não encontrado no banco de dados");}else{Integerano=Integer.parseInt(cliente.getAnoNascimento());IntegeranoAtual=LocalDate.now().getYear();Integerresultado=anoAtual-ano;StringresultadoString=resultado.toString();System.out.println("A idade é: "+resultadoString);}}
Diz que não foi possível encontrar uma forma de construir a classe Cliente para o número de valor 1995.
S
Silas_Fernandes
Entendi mano, inclusive fiz aqui e deu certo quando ele encontra o ano no banco de dados ele me retorna o calculo da idade certo, mas quando eu passo um ano que não existe no banco de dados ele me da um erro, como eu faço esse tratamento pra ele me retornar 0 ao inves de erro?
alterei o método de busca, o 2005 ali é um ano inexistente no banco de dados
publicstaticvoidbuscaPeloAno(){Map<String,String>param=newHashMap<>();param.put("anoNascimento","2005");Clientecliente=restTemplate.getForObject(BUSCA_PELO_ANO,Cliente.class,param);if(cliente.getAnoNascimento().isEmpty()==true){System.out.println("Ano não encontrado no banco de dados");}else{Integerano=Integer.parseInt(cliente.getAnoNascimento());IntegeranoAtual=LocalDate.now().getYear();Integerresultado=anoAtual-ano;StringresultadoString=resultado.toString();System.out.println("A idade é: "+resultadoString);}}
S
Silas_Fernandes
Esse é o erro que me retorna com um ano inexistente no banco de dados.
Talvez o endpoint esteja retornando vazio qdo vc passa um ano inexistente. Com isso, o cliente deve ficar NULL e talvez esteja estourando null pointer nessa linha: