Обработка пустых случаев ответа сервера
Я вызываю конечную точку, чтобы получить список объектов с сервера. Использование Retrofit2.0 + RxJava для вызовов API.
Сервер сделал это таким образом, что, когда в списке нет элементов, вместо возврата пустого списка, он возвращает ноль с кодом ответа 204...
Если я использую Observable<List<Item>>
когда список пуст, он попадет в onError из-за нулевого тела. Если я использую Completable
или же Observable<Void>
Я не смогу обработать возвращенные данные....
Я думал об обработке этого, проверяя сообщение об ошибке и предполагая, что if - пустое исключение, чтобы продолжить нормальный поток, но я не совсем доволен этим взломом....
Есть ли способ справиться с этой ситуацией?
1 ответ
- 204. Отсутствие содержимого означает, что запрос успешно обработан, но нет информации для возврата.
Вы можете использовать это в методе OnError для большей наглядности:
@Override
public void onError(Throwable e) {
try {
Log.e("errorL", ((HttpException) e).response().errorBody().string());
} catch (IOException e1) {
e1.printStackTrace();}}
Удачи!