Java.lang.IllegalStateException: Roher Antworttext eines konvertierten Texts kann nicht gelesen werden [geschlossen]Java

Java-Forum
Anonymous
 Java.lang.IllegalStateException: Roher Antworttext eines konvertierten Texts kann nicht gelesen werden [geschlossen]

Post by Anonymous »

Ich versuche, mögliche Fehler auszudrucken, wenn ich mit Retrofit eine externe API aufrufe. Ich habe die folgende Methode geschrieben:

Code: Select all

private static void printPossibleErrors(Response response) throws IOException {
if (Objects.nonNull(response) && !response.isSuccessful()) {

try (okhttp3.Response raw = response.raw(); ResponseBody errorBody = response.errorBody()) {
String fullUrl = Optional.ofNullable(raw)
.map(okhttp3.Response::request)
.map(Request::url)
.map(HttpUrl::toString)
.orElseGet(() -> "");
log.info(
"MY api calling {} error response with code: {}, body: {}",
fullUrl,
response.code(),
errorBody.string());
}
}
}
Diese Methode wird gut ausgeführt und ich kann in der Konsole auf meinem lokalen Computer sehen, wie der Fehler protokolliert wird. Beim Beenden der Methode wird jedoch eine IllegalStateException ausgelöst:

java.lang.IllegalStateException: Cannot read raw Response Body of a
converted Body.

Ich habe herumgelesen und festgestellt, dass ein ResponseBody von Retrofit dies nicht kann zweimal gelesen werden. In meinem Code lese ich jedoch die Rohantwort und den Fehlertext, bei denen es sich um separate Objekte handelt:

Code: Select all

public final class Response {

private final okhttp3.Response rawResponse;
private final T body;
private final ResponseBody errorBody;

// ...
}
Dann bekomme ich die relevanten Informationen von ihnen. Das Einzige, was mir einfällt, ist, dass der Versuch mit Ressourcen möglicherweise darin besteht, diese Objekte im Retrofit2-Antwortobjekt zweimal zu lesen? Ich hatte erwartet, dass die Ausnahme während der Ausführung der Methode auftritt, sie wurde jedoch vollständig ausgeführt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post