Обработчик ошибок по умолчанию RestTemplate DefaultResponseErrorHandler
уже читает тело ответа и устанавливает его в объекте HttpStatusCodeException
, который он выбрасывает.
try {
restTemplate.getForObject("http://...", String.class);
} catch (HttpStatusCodeException e) {
System.out.println("Received error: " + e.getResponseBodyAsString());
}
Если вы хотите всегда регистрировать тело ответа при ошибкене требуя перехвата HttpStatusCodeException
, вы можете расширить обработчик ошибок по умолчанию.
public static class LoggingErrorHandler extends DefaultResponseErrorHandler {
@Override
public void handleError(ClientHttpResponse response) throws IOException {
try {
super.handleError(response);
} catch (HttpStatusCodeException e) {
System.out.println("Error response body is " + e.getResponseBodyAsString());
throw e;
}
}
}
Используйте указанный выше обработчик ошибок при создании экземпляра шаблона отдыха.
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new LoggingErrorHandler());
String response = restTemplate.getForObject("http://...", String.class);