Невозможно прочитать необработанное тело ответа преобразованного тела.JAVA

Программисты JAVA общаются здесь
Anonymous
Невозможно прочитать необработанное тело ответа преобразованного тела.

Сообщение Anonymous »

Я пытаюсь вывести возможные ошибки при вызове внешнего API с помощью модификации. Я написал следующий метод:

Код: Выделить всё

    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());
}
}
}
Этот метод работает хорошо, и я вижу в консоли на своем локальном компьютере, как регистрируется ошибка. Однако при выходе из метода выдается исключение IllegalStateException:
java.lang.IllegalStateException: невозможно прочитать необработанное тело ответа преобразованного тела.
Я читал и обнаружил, что ResponseBody из модификации нельзя прочитать дважды. Однако в моем коде я читаю необработанный ответ и тело ошибки, которые являются отдельными объектами:
Изображение

и затем получаю от них соответствующую информацию. Единственное, что мне приходит в голову, это то, что, возможно, попытка с ресурсами дважды читает эти объекты внутри объекта Retrofit2 Response? Я ожидал, что исключение возникнет во время выполнения метода, но оно было выполнено полностью.

Подробнее здесь: https://stackoverflow.com/questions/797 ... erted-body

Вернуться в «JAVA»