Spring Rest客户端异常处理

时间:2015-02-25 04:08:04

标签: java spring rest rest-client

我使用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了解了CustomRestTemplateResponseExtractor,但无法确定哪一个最适合我的情况。

2 个答案:

答案 0 :(得分:11)

我找到了解决方案。 HttpClientErrorException为我工作。

它具有返回ResponseBody的e.getResponseBodyAsString()函数。

答案 1 :(得分:6)

您可能希望区分:

HttpClientErrorException(HTTP状态&gt; = 400)或HttpServerErrorException(HTTP状态&gt; = 500)或甚至RestClientException

此外,还有一个很好的文档,关于定义自己的ErrorHandler,see this link