使用 rxandroid 调用改造 api 时刷新身份验证令牌
Refreshing auth token when call retrofit api with rxandroid
我正在进行改造 api,return 在某些数据上可以观察到。
Api 使用授权令牌访问服务器。当 auth 令牌过期时,我收到有关它的错误消息(Observer 在订阅者中调用 onError)。
public Observable<MyObject> getObjectObservable() {
return mApi.getObject();
}
我也可以用 observable 刷新令牌:
private Observable<AuthResult> restoreToken() {
return mApi.restoreToken(new RestoreTokenBody(getRestoreToken()));
}
如何在 getObjectObservable 函数中实现后续步骤:
- 首先尝试 mApi.getObject()
- 错误刷新令牌
- 刷新后再次调用 mApi.getObject()
尝试使用运算符 onErrorResumeNext
像这样:
public Observable<MyObject> getObjectObservable() {
return mApi.getObject()
.onErrorResumeNext(restoreToken().flatMap(authResult -> mApi.getObject()));
}
我正在进行改造 api,return 在某些数据上可以观察到。
Api 使用授权令牌访问服务器。当 auth 令牌过期时,我收到有关它的错误消息(Observer 在订阅者中调用 onError)。
public Observable<MyObject> getObjectObservable() {
return mApi.getObject();
}
我也可以用 observable 刷新令牌:
private Observable<AuthResult> restoreToken() {
return mApi.restoreToken(new RestoreTokenBody(getRestoreToken()));
}
如何在 getObjectObservable 函数中实现后续步骤:
- 首先尝试 mApi.getObject()
- 错误刷新令牌
- 刷新后再次调用 mApi.getObject()
尝试使用运算符 onErrorResumeNext
像这样:
public Observable<MyObject> getObjectObservable() {
return mApi.getObject()
.onErrorResumeNext(restoreToken().flatMap(authResult -> mApi.getObject()));
}