我是 RxJava 的新手,但我喜欢它。现在我没有什么问题了。
我正在使用 RxJava
+ Retrofit
。
如果我有有效的用户 token ,我会收到 API 的响应,但如果 token 无效,我必须刷新 token 并再次尝试发出请求。
有效 token :
- 提出要求
- 获取响应
- 完成
无效 token :
- 提出要求
- 获取响应
如果
response_code == 403
,需要刷新 token
- 刷新 token
- 这里我想转到第 1 步并再次向 API 发出请求
Else
- 完成
如何使用 RxJava 实现?
试试这个有我的知识
service.normalRequest()
.flatMap( new Func1<Response, Observable<Response>>() {
@Override
public Observable<Response> call(Response response) {
if (response.code() == 403) {
return service.refreshToken(refreshRequest)
.flatMap(new Func1<Response, Observable<Response>>() {
@Override
public Observable<Response> call(Response response) {
return service.normalRequest();
}
});
} else {
return Observable.just(response);
}
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
new Subscriber<Response>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Response response) {
}
});