Тела ошибки модернизации имеют тип OkHttp3 ResponseBody
.Этот класс является абстрактным, и его реализации определяют различные способы внутреннего представления содержимого.
Существуют различные способы получения содержимого.Вы можете получить его в bytes
в виде строки или даже получить InputStream
для этого - проверьте их здесь .
Я полагаю, что простой способ - использовать string()
:
value.errorBody().string();
Обратите внимание, что эти методы обычно читают ответ из буфера, что означает, что, если я правильно помню, повторный вызов string()
не даст вам содержимое ответа снова.В частности, string()
также считывает все тело в память, что может вызвать исключение нехватки памяти.
Если у вас есть содержимое, если вы хотите, чтобы оно было объектом из вашей модели данных, выпридется десериализовать его вручную.Существует множество способов сделать это, и их легко найти в Интернете, но для полноты картины, вот способ сделать это с помощью gson
:
String error = value.errorBody().string();
MyPojo pojo = new Gson().fromJson(error, MyPojo.class);
(здесь MyPojo
будет вашим классом ошибок, представляющим ошибку)