Обработка случаев нулевого ответа сервера

Я вызываю конечную точку, чтобы ПОЛУЧИТЬ список объектов с сервера. Использование Retrofit2.0 + RxJava для вызовов API.

Сервер сделал так, что когда в списке нет элементов, вместо того, чтобы возвращать пустой список, он возвращает null с кодом ответа 204...

Если я использую Observable<List<Item>>, когда список пуст, он столкнется с ошибкой из-за нулевого тела. Если я использую Completableили Observable<Void>, я не смогу обработать какие-либо возвращаемые данные....

Я думал о том, чтобы справиться с этим, проверив сообщение об ошибке и предположив, что если это нулевое исключение, чтобы продолжить нормальный поток, но мне не совсем удобно с этим хаком....

Есть ли способ справиться с этой ситуацией?


person petryk33    schedule 18.02.2019    source источник
comment
Возможно, это может помочь: stackoverflow.com/questions/43702427/   -  person theAsker    schedule 18.02.2019


Ответы (1)


  • 204 : Нет содержимого означает, что запрос успешно обработан, но нет информации для возврата.

Вы можете использовать это в методе OnError, чтобы иметь больше видимости:

@Override
public void onError(Throwable e) {
    try {

          Log.e("errorL", ((HttpException) e).response().errorBody().string());

        } catch (IOException e1) {
        e1.printStackTrace();}}

Удачи !

person Garci    schedule 18.02.2019