Wie Kriege ich den HTTP-status-code-und-Antwort-body als ein RestClientException geworfen wird?
Den Methoden der RestTemplate
wie postForEntity()
werfen RestClientException
. Ich möchte zum extrahieren des HTTP status-code und Antwort Körper von diesem exception-Objekt im catch-block. Wie kann ich das tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stattdessen fangen
RestClientException
, fangen die BesondereHttpClientErrorException
.Hier ein Beispiel:
HttpClientErrorException
bietetgetStatusCode
undgetResponseBodyAsByteArray
, um den status-code und Körper, beziehungsweise.HttpStatusCodeException
vererbtHttpClientErrorException
undHttpServerErrorException
.HttpStatusCodeException
haben Sie Zugriff auf die MethodegetResponseBodyAsString()
.In einigen Fällen, HttpClientErrorException ist nicht throwed. Zum Beispiel die folgende Methode restTemplate.exchange:
Bekommen den http-body und marshall zu einer Einheit. Wenn die remote-Ressource gibt einen seltenen Fehler, interner marshall nicht funktioniert und nur ein RestClientException ist throwed.
restTemplate.setErrorHandler
In diesem Fall, oder wenn Sie wollen, um jegliche Fehler in restTemplate Operationen, die Sie nutzen könnten setErrorHandler. Diese Methode erhalten eine grundlegende ResponseErrorHandler mit hilfreichen Methoden.
Diese Methode hasError mir erlaubt, um die remote-http-text und hat mir geholfen zu erkennen, die Fehler der Anrufung oder in der remote-http-remote-Ressource:
Außerdem können Sie manuell bewerten, des Körpers oder der status und die true oder false zurückgeben, um die fahne als Fehler oder nicht.
Fangen
RestClientResponseException
statt. Es ist mehr Generika.Aus der docs: Gemeinsame Basisklasse für Ausnahmen, die enthalten die tatsächlichen HTTP-response-Daten.