Извлеч информацию из ошибки HttpClientErrorException при работе с restTemplate

Я вызываю

ResponseEntity<Message> response = restTemplate.exchange(urlRemoveCard, HttpMethod.POST, requestBody, Message.class);

проблема в том, что я не совсем понимаю, как обработать ответ от urlRemoveCard. urlRemoveCard это url к вневнему сервису. В свагере указано, что если все хорошо, то приходит код 200 и message ".....".

но при различных других вариантах предусмотренны ошибки разных статусов.

К примеру если случается HttpClientErrorException то может вернуться ошибка

code 1800009 message "......."

Мне нужно из любого ответа извлекать данные и сохранять в Response.class который содержит поля code и message. введите сюда описание изображения

Проблема в том что когда случается Exeption я просто перехватываю его, где в строке записан код и сообщение. Мне нужно вытащить из этой строки данные, а это очень не удобно.

Можно ли как то перехватывать ответ и доставать из него код и сообщение?

фрагмент свагера.

Message это простой объект

@Data
public class Message {
    private String code;
    private String message;
}

Ответы (1 шт):

Автор решения: Chubatiy

Перехватывайте RestClientException

И доставайте что вам нужно)) Как вариант

Exception ex = ....
//Получаем исключение
String responseBody = ex.getMessage();
//Если это ошибка ответа
if (ex instanceof RestClientResponseException) {
    //получаем тело ответа
    responseBody = ((RestClientResponseException) ex).getResponseBodyAsString();
}
//Тут что-то делаете с responseBody
→ Ссылка