Клиент Spring Rest хочет видеть сообщение об ошибке вместо исключения

У меня есть клиент весеннего отдыха. когда данные аутентификации не указаны в заголовках, и я обращаюсь к сервису с помощью

ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.GET, request, String.class);

Я получаю исключение:

вызов обработчика ошибок Исключение в потоке "основной" org.springframework.web.client.HttpClientErrorException: 401 Несанкционировано в org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)

Но когда я нажимаю URL-адрес в браузере Mozilla, я получаю сообщение вроде

{"errors":[{"code":"xxxx","reason":"xxxx"}]}

Теперь вот что я хочу: я хочу зафиксировать это сообщение об ошибке в своем коде вместо получения исключения 401. Я попытался посмотреть, есть ли что-нибудь в ответе. Но полученный ответ нулевой. Как я могу перехватить сообщение об ошибке, полученное от веб-сервиса?


person Amar    schedule 16.10.2014    source источник
comment
Это все еще проблема. Я хочу получить ответ, а затем решить для себя, как с ним справиться, вместо того, чтобы создавать исключение. С точки зрения обработки, это гораздо менее эффективно.   -  person Fred Haslam    schedule 19.09.2017


Ответы (1)


Мне странно публиковать ответ на мой собственный вопрос. Но я, наконец, добился этого благодаря следующему...

} catch (HttpClientErrorException e) {
      System.out.println(e.getStatusCode());
      System.out.println(e.getResponseBodyAsString());
    }

Я неправильно искал ошибки в объекте ответа. Но он доступен в виде исключения.

person Amar    schedule 17.10.2014
comment
Для тех, кто ищет только причину/сообщение об исключении: e.getResponseBodyAsString() возвращает много других вещей, таких как statusCode, statusText и т. д., кроме причины/сообщения об исключении. Вам придется вручную проанализировать его из исключения. - person Mubin; 11.06.2016