如何在RxJava + Retrofit中添加刷新令牌逻辑? [英] How to add refresh token logic to RxJava+Retrofit?
本文介绍了如何在RxJava + Retrofit中添加刷新令牌逻辑?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是RxJava的新手,但我喜欢它.现在我没什么问题了.我正在使用 RxJava
+ Retrofit
.
I'm new in RxJava, but I like it. And now I have little problem.
I'm using RxJava
+ Retrofit
.
如果我有有效的用户令牌,则会收到API的响应,但是如果令牌无效,则必须刷新令牌并再次尝试发出请求.
If I have valid token for user, I get response for API, but if token is invalid, I must refresh token and try make request again.
有效令牌:
- 提出要求
- 获取回复
- 完成
无效令牌:
- 提出请求
- 获取回复
-
如果
response_code == 403
,则需要刷新令牌 - 刷新令牌
- 在这里我要转到第一步并再次向API发出请求
-
其他
-完成
- Make request
- Get response
If
response_code == 403
, need refresh token- Refresh token
- Here I want go to 1 step and make request to API again
Else
- done
如何使用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) {
}
});
这篇关于如何在RxJava + Retrofit中添加刷新令牌逻辑?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文