Ich benutze RestTemplate, um die Kommunikation zwischen unserem Dienst und einem Polycom RMX-Gerät zu handhaben, das eine HTTP-API hat, die meistens aus Postanrufen besteht, die XML hin und her senden. Das Problem kommt, wenn ein Fehler aufgetreten ist (dh etwas nicht gefunden), wird es nicht die erwartete Antwort zurückgeben und so bekomme ich einen FehlerRestApi Ausnahme mit Antwort
org.springframework.http.converter.HttpMessageNotReadableException: kann nicht Abstellungs zu [Klasse com.ourclass.polycom.rmx.sdk.RESPONSETRANSRES]: unerwartet Element (uri: "", lokal: "RESPONSE_GENERAL"). Erwartete Elemente sind < {} ACTION>, < {} additional_info>
So sein Tring des Fehlerobjekt zu RESPONSETRANSRES deserialisieren, weil das ist, was in übergeben wurde (Code siehe unten), sondern wegen der Fehlerreaktion wir Sie erhalten tatsächlich ein RESPONSEGENERAL-Objekt und wissen daher nicht, wie man das stattdessen anordnet.
protected <Request, Response> Response doPost(String uri, Request data, Class<Response> responseClass) throws Exception
{
String requestUrl = null;
try
{
RestTemplate restApi = obtainRestTemlate(true);
ResponseEntity<Response> response = restApi.exchange(requestUrl, HttpMethod.POST, createRestRequest(HttpMethod.POST, uri, data), responseClass);
validateResponseStatus(response.getStatusCode());
return response.getBody();
}
catch (Exception e)
{
throw translateError(requestUrl, e);
}
}
Da dies für einen Fehler Fall ist, würde ich es vorziehen, um die Ausnahme zu fangen, um die Nutzlast zu bekommen und Analysepunkte, es in das Objekt Ich weiß es zu sein. Ist das möglich und wie?
Ich schaute über this SO Antwort, aber e.getResponseBodyAsString();
ist kein Mitglied meiner Ausnahme. Es ist wahrscheinlich auch wichtig zu beachten, dass wenn die Fehler passieren, der Statuscode immer noch 200 ok ist. also würde der in der Post angegebene Fang nicht für mich passieren.
Die REST-API bietet sowohl für die Fehlercodeebene als auch für die Statuscodeebene eine Fehlerbehandlung. Verweisen Sie dieses Beispiel zum Beispiel: http://howtodoinjava.com/jersey/jax-rs-jersey-custom-exceptions-handling-with-exceptionmapper/ – amitmah