Таким образом, вы можете проверить, какой код ошибки был выдан запросом.
жен работать с API, который используетJSend формат.
Короче говоря, он использует коды состояния HTTP, которые указывают на статус, как:
200 - это успех406 не авторизованЭто хорошо, потому что из этого я могу определить, был ли мой запрос API успешным или нет.
НО:
Поскольку у формата JSend есть своя собственная особенность, он также имеет небольшой индикатор состояния при ответе:
{
status : "success",
data : { "post" : { "id" : 2, "title" : "Another blog post", "body" : "More content" }}
}
Таким образом, у него есть поле «status», которое ТАКЖЕ показывает, успешно ли выполнен запрос API.
ПРОБЛЕМА:
Модификация сделана для анализа ответа на POJO, так что предполагается, что ответы содержат ТОЛЬКО Модель, а не индикаторы успеха, как, например, это: (экземпляр модели после)
{ "id" : 2, "title" : "Another blog post", "body" : "More content" }
Мой вопрос:
Есть ли решение для этого? Могу ли я предварительно проанализировать индикаторы состояния, разделить часть ответа «данные» (модель) и дать ее для модификации только для анализа этой части?
Если бы не я, я бы добавил атрибут «статус» к каждой из моих моделей, что явно не подходит, я не буду этого делать.
Должен ли я просто придерживаться ручного анализа и использованияResponseBody
вместо моих моделей в
void onResponse(Call<T> call, Response<T> response);
заT
тип параметров?
Потому что таким образом я могу использовать.string()
и преобразовать строку в JSON, и после этого я могу анализировать свои модели вручную, как писать для них анализатор.
Я бы очень хотел использовать функцию Retrofit для автоматического разбора, потому что сJSend Я просто не могу себе представить, как это можно сделать правильно, если так или иначе вообще.
Я не могу изменить API, так будет.