Rxjava2 и повторная обработка ошибок не работают - PullRequest
0 голосов
/ 01 февраля 2020

Я использую модификацию 2 и rxjava2 в своем проекте, и я изо всех сил в обработке ошибки.

        private Observable<Segment> executeUploadVideoUseCase(Segment segment) {
        LogDnaLogger.info("Segment upload: " + segment.toString());

        return mUploadVideoUseCase.execute().flatMap(voidResponse -> {
            LogDnaLogger.info("Segment upload success : " + segment.toString());
            return Observable.just(segment);
        });

    }

mUploadVideoUseCase.execute() is returning 
Observable<Response<Void>>.

Я вхожу в журнал успешной загрузки сегмента, даже если исключение 400 неверных запросов.

Как я могу обработать 400 неправильных запросов и передать это исключение в вызывающую функцию?

1 Ответ

0 голосов
/ 01 февраля 2020

когда вы объявляете свой интерфейс как Observable<Response<T>> success и HTTP-ошибки доставляются в onNext, а onError вызывается только в случае исключения ввода-вывода в случае сетевых ошибок.

Вы можете использовать Response.isSuccess(), чтобы проверить, является ли это успешным вызовом или ошибкой HTTP.

Другие альтернативные объявления от javado c:

Для * поддерживаются три конфигурации Параметр типа 1013 *, Flowable, Single, Completable и Maybe:

  • Прямое тело (например, Observable<User>) вызывает onNext с десериализованным телом для ответов 2XX и вызывает onError с HttpException для ответов, отличных от 2XX, и IOException для сетевых ошибок.
  • Обернутый телом ответ (например, Observable<Response<User>>) вызывает onNext с объектом Response для всех HTTP-ответы и вызовы onError с IOException для сетевых ошибок
  • Результат, заключенный в тело (например, Observable<Result<User>>), вызывает onNext с объектом Result для всех HTTP-ответов и ошибок.
...