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.
You might want to distinguish between:
HttpClientErrorException
(HTTP-Status >=400) orHttpServerErrorException
(HTTP-Status >= 500) or evenRestClientException
.Further on there is a good doc about defining your own ErrorHandler, see this link
I found solution.
HttpClientErrorException
worked for me.It has
e.getResponseBodyAsString()
function which returns ResponseBody.