使用rxandroid调用retrofit api时刷新身份验证令牌

时间:2015-08-12 21:20:48

标签: android retrofit rx-java rx-android

我正在进行改造api,它会在某些数据上返回可观察的数据。

Api使用auth令牌访问服务器。当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()

1 个答案:

答案 0 :(得分:1)

尝试使用operator onErrorResumeNext这样的事情:

public Observable<MyObject> getObjectObservable() {
    return mApi.getObject()
            .onErrorResumeNext(restoreToken().flatMap(authResult ->  mApi.getObject()));
}