How do I retrieve HTTP status code and response body when an RestClientException is thrown?
java, resttemplate
Solution
Instead of catching `RestClientException`, catch the special `HttpClientErrorException`.
Here's an example:
try {
Link dataCenterLink = serviceInstance.getLink("dataCenter");
String dataCenterUrl = dataCenterLink.getHref();
DataCenterResource dataCenter =
restTemplate.getForObject(dataCenterUrl, DataCenterResource.class);
serviceInstance.setDataCenter(dataCenter);
} catch (HttpClientErrorException e) {
HttpStatus status = e.getStatusCode();
if (status != HttpStatus.NOT_FOUND) { throw e; }
}
`HttpClientErrorException` provides `getStatusCode` and `getResponseBodyAsByteArray` to get the status code and body, respectively.
Problem
The methods of `RestTemplate` such as `postForEntity()` throw `RestClientException`. I would like to extract the HTTP status code and response body from that exception object in the catch block. How can I do that?