RestTemplate
的方法(例如postForEntity()
)抛出RestClientException
。我想从catch块中的异常对象中提取HTTP状态代码和响应主体。我怎样才能做到这一点?
最佳答案
代替捕获RestClientException
,而是捕获特殊的HttpClientErrorException
。
这是一个例子:
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
提供 getStatusCode
和 getResponseBodyAsByteArray
分别获取状态码和正文。