如何在RxJava + Retrofit中添加刷新令牌逻辑? [英] How to add refresh token logic to RxJava+Retrofit?

查看:61
本文介绍了如何在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.

有效令牌:

  1. 提出要求
  2. 获取回复
  3. 完成

无效令牌:

  1. 提出请求
  2. 获取回复
  3. 如果 response_code == 403 ,则需要刷新令牌
  4. 刷新令牌
  5. 在这里我要转到第一步并再次向API发出请求
  6. 其他-完成
  1. Make request
  2. Get response
  3. If response_code == 403, need refresh token
  4. Refresh token
  5. Here I want go to 1 step and make request to API again
  6. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆