网络与RxRetrofit连接时重试API请求?

时间:2017-10-15 17:12:11

标签: android retrofit2 rx-java2

当网络连接与Rx-java一起使用时,有没有重试改进的http请求?

这是我的请求方法

public DisposableObserver<List<Photo>> getNewPhotos(final int page,
                                                    int perPage,
                                                    String orderBy,
                                                    ObservableTransformer<List<Photo>, List<Photo>> observableTransformer,
                                                    final Callback<List<Photo>> callBack) {
    return photoService.getPhotos(page, perPage, orderBy)
            .compose(observableTransformer)
            .retryWhen(new Function<Observable<Throwable>, ObservableSource<?>>() {
                @Override
                public ObservableSource<?> apply(Observable<Throwable> throwableObservable) throws Exception {
                    return null;
                }
            })
            .onErrorResumeNext(new Function<Throwable, ObservableSource<? extends List<Photo>>>() {
                @Override
                public ObservableSource<? extends List<Photo>> apply(Throwable throwable) throws Exception {
                    return Observable.error(throwable);
                }
            })
            .subscribeWith(new DisposableObserver<List<Photo>>() {
                @Override
                public void onNext(List<Photo> value) {
                    callBack.onSuccess(value);
                }

                @Override
                public void onError(Throwable e) {
                    callBack.onError(new NetworkError(e));
                }

                @Override
                public void onComplete() {

                }
            });
}

我想也许我可以在retryWhen()方法中做点什么。 我希望改装触发互联网连接,并在连接恢复时重试最后一个请求。 我知道传统的重试方式,但我认为在Rx-java中必须有一个方法或东西来处理这个问题。 如果有人知道与我分享它的好处。

0 个答案:

没有答案