Phương thức của RestTemplate
chẳng hạn như postForEntity()
ném RestClientException
. Tôi muốn trích xuất mã trạng thái HTTP và nội dung phản hồi từ đối tượng ngoại lệ đó trong khối catch. Làm thế nào tôi có thể làm điều đó?Làm cách nào để truy xuất mã trạng thái HTTP và nội dung phản hồi khi một RestClientException bị ném?
9
A
Trả lời
17
Thay vì bắt RestClientException
, hãy bắt đặc biệt HttpClientErrorException
.
Dưới đây là một ví dụ:
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
cung cấp getStatusCode
và getResponseBodyAsByteArray
để có được mã trạng thái và cơ thể, tương ứng.
Tôi đã chỉnh sửa câu trả lời của bạn để thêm một số chi tiết hữu ích khác và làm cho câu hỏi/câu trả lời này hữu ích hơn như kinh điển. –
Chỉnh sửa tuyệt vời. Cảm ơn! –
loại chung chung hơn là 'HttpStatusCodeException' được thừa hưởng bởi' HttpClientErrorException' và 'HttpServerErrorException'. –