2015-02-25 7 views
4

Я использую весну RestTemplate, чтобы потреблять службы отдыха (выставлены в весеннем отдыхе). Я могу использовать сценарии успеха. Но для отрицательных сценариев служба возвращает сообщения об ошибках и коды ошибок. Мне нужно показать эти сообщения об ошибках на моей веб-странице.Обработка остаточного клиента Spring Rest

См., Например, для недействительного запроса, сервисные броски HttpStatus.BAD_REQUEST с правильными сообщениями. Если я поставлю блок try-catch, он переходит в блок catch, и я не могу получить объект ResponseEntity.

try { 
    ResponseEntity<ResponseWrapper<MyEntity>> responseEntity = restTemplate.exchange(requestUrl, HttpMethod.POST, entity, 
     new ParameterizedTypeReference<ResponseWrapper<MyEntity>>() { 
    }); 
    responseEntity.getStatusCode(); 
    } catch (Exception e) { 
     //TODO How to get response here, so that i can get error messages? 
     e.printStackTrace(); 
    } 

Как получить ResponseWrapper для случая исключения?

Я прочитал около CustomRestTemplate и ResponseExtractor от here, но не смог решить, какой из них лучше всего подходит для моего дела.

+0

вы можете создать сам новый объект Response Entity. new ResponseEntity (HttpStatus.BAD_REQUEST); для получения сообщений об ошибках, вам нужно поймать RestClientException и получить сообщение от rce.getMessage() примерно так. –

+0

Вы можете поймать HttpStatusCodeException, у которого есть код состояния http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/HttpStatusCodeException.html –

ответ

8

Я нашел решение. HttpClientErrorException работал для меня.

У этого есть e.getResponseBodyAsString() функция, которая возвращает ResponseBody.

3

Вы можете различать:

HttpClientErrorException (HTTP-Status> = 400) или HttpServerErrorException (HTTP-Status> = 500) или даже RestClientException.

Далее есть хороший документ об определении собственных ErrorHandler, see this link

Смежные вопросы