Estou com duvida no HTTP status. Sempre que o resultado da requisição for diferente de 200 o java irá tratar como HttpClientErrorException?
Nestes casos de exceções, como faço para capturar a mensagem que a api retorna?
Estou com duvida no HTTP status. Sempre que o resultado da requisição for diferente de 200 o java irá tratar como HttpClientErrorException?
Nestes casos de exceções, como faço para capturar a mensagem que a api retorna?
Não entendi muito sua dúvida Sylvio, você está consumindo um web service utilizando o Java ou está criando uma API?
Talvez um try/catch
deve resolver seu problema.
Oi Matheus, Tenho um block try-catch para a chamada da API que vocês providenciaram para a aula.
try {
String url = "http://book-payment.herokuapp.com/payment";
String response = restTemplate.postForObject(url, new PaymentData(cart.getTotal()), String.class);
System.out.println("API response: " + response);
model.addFlashAttribute("success", response);
cart.clear();
} catch (HttpClientErrorException e) {
System.out.println("Request error: " + e.getMessage());
model.addFlashAttribute("fail", e.getMessage());
e.printStackTrace();
}
Entretanto, não consigo capturar a mensagem que a API retorna quando o código é diferente de 200.
No postman por exemplo, no status 400 a API de vocês retorna um texto "Valor maior que o permitido". Porem, o getMessage da exceção HttpClientErrorException não retorna esta mesma mensagem.
Quando o código não é 200, a resposta se não me engano vai estar no body
da requisição, não sei como está a API, mas tente fazer esse teste.