Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Refreshing auth token when call retrofit api with rxandroid

I have working retrofit api, which return observable on some data.

Api use auth token for access to server. When auth token expired I have error message about it (Observer call onError in subscriber).

public Observable<MyObject> getObjectObservable() {
    return mApi.getObject();
}

I can refresh token with observable too:

private Observable<AuthResult> restoreToken() {
    return mApi.restoreToken(new RestoreTokenBody(getRestoreToken()));
}

How implement next steps in getObjectObservable function:

  • First try mApi.getObject()
  • On Error refresh token
  • After refreshing it call mApi.getObject() again
like image 412
HotIceCream Avatar asked Mar 24 '26 02:03

HotIceCream


1 Answers

Try to use operator onErrorResumeNext Something like this:

public Observable<MyObject> getObjectObservable() {
    return mApi.getObject()
            .onErrorResumeNext(restoreToken().flatMap(authResult ->  mApi.getObject()));
}
like image 59
ArtKorchagin Avatar answered Mar 26 '26 15:03

ArtKorchagin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!