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

и затем получаю от них соответствующую информацию. Единственное, что мне приходит в голову, это то, что, возможно, попытка с ресурсами дважды читает эти объекты внутри объекта Retrofit2 Response? Я ожидал, что исключение возникнет во время выполнения метода, но оно было выполнено полностью.
Подробнее здесь: https://stackoverflow.com/questions/797 ... erted-body
Мобильная версия