I metodi di RestTemplate
come postForEntity()
restituiscono RestClientException
. Vorrei estrarre il codice di stato HTTP e il corpo della risposta da quell'oggetto eccezione nel blocco catch. Come lo posso fare?Come recuperare il codice di stato HTTP e il corpo della risposta quando viene generata un'eccezione RestClientException?
9
A
risposta
17
Invece di cattura RestClientException
, prendere la speciale HttpClientErrorException
.
Ecco un esempio:
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
fornisce getStatusCode
e getResponseBodyAsByteArray
per ottenere il codice di stato e il corpo, rispettivamente.
Ho modificato la risposta per aggiungere ulteriori dettagli utili e rendere questa domanda/risposta più utile come canonica. –
Grande modifica. Grazie! –
più generico è 'HttpStatusCodeException' ereditato da' HttpClientErrorException' e 'HttpServerErrorException'. –