使用rxandroid调用retrofit api时刷新授权令牌



我有一个工作的改进api,它返回一些数据的可观察对象。

Api使用认证令牌访问服务器。当授权令牌过期时,我有关于它的错误消息(观察者在订阅者中调用onError)。
public Observable<MyObject> getObjectObservable() {
    return mApi.getObject();
}

我也可以用observable刷新token:

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()));
}

相关内容

  • 没有找到相关文章

最新更新