Spring Rest Client Exception Handling

試著忘記壹切 提交于 2019-12-04 21:05:59

问题


I am using spring RestTemplate to consume rest services(exposed in spring rest). I am able to consume success scenarios. But for negative scenarios, service returns error messages and error codes. I need to show those error messages in my web page.

For e.g. for invalid request, service throws HttpStatus.BAD_REQUEST with proper messages. If i put try-catch block it goes to catch block and I am not able to get ResponseEntity object.

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();
    }

How to get ResponseWrapper for exception case?

I read about CustomRestTemplate and ResponseExtractor from here but could not decide which one is best for my case.


回答1:


I found solution. HttpClientErrorException worked for me.

It has e.getResponseBodyAsString() function which returns ResponseBody.




回答2:


You might want to distinguish between:

HttpClientErrorException (HTTP-Status >=400) or HttpServerErrorException (HTTP-Status >= 500) or even RestClientException.

Further on there is a good doc about defining your own ErrorHandler, see this link



来源:https://stackoverflow.com/questions/28710945/spring-rest-client-exception-handling

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!