我想创建请求链但它应该看起来。
我致电apiService.changePassword()
,我可以获得成功200和401错误。如果我获得成功,那么一切都很好,我必须致电apiService.refreshToken()
现在如果我得到刷新令牌,我应该再次致电apiService.changePassword()
。我考虑使用retryWhen
。我应该用什么?
[编辑:]
我得到了解决方案:
apiService.jobOffers(...)
.subscribeOn(Schedulers.io())
.flatMap(new Func1<Response<ResponseBody>, Observable<FeedDataProvider>>() {
@Override
public Observable<FeedDataProvider> call(Response<ResponseBody> response) {
...
}
}).retryWhen(new Func1<Observable<? extends Throwable>, Observable<?>>() {
@Override
public Observable<?> call(Observable<? extends Throwable> observable) {
return observable.flatMap(new Func1<Throwable, Observable<?>>() {
@Override
public Observable<?> call(Throwable throwable) {
if(throwable instanceof RetrofitException) {
///refresh token
}
}
return Observable.error(throwable);
}
});
}
});