Обработка пустых случаев ответа сервера

Я вызываю конечную точку, чтобы получить список объектов с сервера. Использование 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();}}

Удачи!

Другие вопросы по тегам