12

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.

2
  • you can create new Response Entity object itself. new ResponseEntity<String>(HttpStatus.BAD_REQUEST); for getting error messages , you need to catch RestClientException and get message by rce.getMessage() something like that. Commented Feb 25, 2015 at 4:22
  • 1
    You can catch HttpStatusCodeException that has the status code docs.spring.io/spring/docs/current/javadoc-api/org/… Commented Feb 25, 2015 at 4:32

2 Answers 2

19

I found solution. HttpClientErrorException worked for me.

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

Sign up to request clarification or add additional context in comments.

Comments

7

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.