我使用spring RestTemplate
来消耗休息服务(在春季休息时暴露)。我能够消耗成功的场景。但对于负面情况,服务会返回错误消息和错误代码。我需要在我的网页中显示这些错误消息。
例如对于无效请求,服务会使用正确的消息抛出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
例外情况?
我从here了解了CustomRestTemplate
和ResponseExtractor
,但无法确定哪一个最适合我的情况。
答案 0 :(得分:11)
我找到了解决方案。 HttpClientErrorException
为我工作。
它具有返回ResponseBody的e.getResponseBodyAsString()
函数。
答案 1 :(得分:6)
您可能希望区分:
HttpClientErrorException
(HTTP状态&gt; = 400)或HttpServerErrorException
(HTTP状态&gt; = 500)或甚至RestClientException
。
此外,还有一个很好的文档,关于定义自己的ErrorHandler,see this link