Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida sobre o HTTP status

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?

3 respostas

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.

solução!

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.