Код: Выделить всё
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());
}
}
}
java.lang.IllegalStateException: невозможно прочитать необработанное тело ответа
преобразованного тела.
Я много читал и обнаружил, что ResponseBody из Retrofit не может читать дважды. Однако в моем коде я читаю необработанный ответ и тело ошибки, которые являются отдельными объектами:
Код: Выделить всё
public final class Response {
private final okhttp3.Response rawResponse;
private final T body;
private final ResponseBody errorBody;
// ...
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... nverted-bo
Мобильная версия