当前位置: 首页 > 知识库问答 >
问题:

如何将刷新令牌逻辑添加到RXJava+改型中?[副本]

郏志学
2023-03-14

我是RxJava新手,但我喜欢它。而现在我有小问题了。我使用的是RxJava+retfit

如果我有有效的用户令牌,我会得到API的响应,但如果令牌无效,我必须刷新令牌并尝试再次发出请求。

    null
    null

如何使用RXJava实现它?

共有1个答案

朱建弼
2023-03-14

试试这个有我的知识

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) {

                }
            }); 
 类似资料:
  • 若要添加一个关系,点击工具栏的 “关系”按钮,并由子实体拖拉一个属性到父实体的属性。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个关系连接器时,父和子实体的边界会分别变为绿色和蓝色。此外,父和子实体的参考属性均会高亮显示。 在画布中关系对象的弹出式菜单选项包括: 选项 描述 设计关系 在实体设计器中编辑关系。 基数在 实体名1 设置基数在实体名1:

  • 若要添加一个关系,点击工具栏的 “关系”按钮,并由子实体拖拉一个属性到父实体的属性。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个关系连接器时,父和子实体的边界会分别变为绿色和蓝色。此外,父和子实体的参考属性均会高亮显示。 在画布中关系对象的弹出式菜单选项包括: 选项 描述 设计关系 在实体设计器中编辑关系。 基数在 实体名1 设置基数在实体名1:

  • 若要添加一个新的实体,点击工具栏的 “实体”按钮,并点击画布的任意位置。你可以从浏览器的模型选项卡添加一个现有的实体,简单地从模型选项卡拖放实体到画布。 如果图表符号设置为默认, 图标代表属性为一个主键。而 图标则代表属性为一个索引。 【注意】如果你右击属性,你可以选择添加、插入、删除、重命名属性及设置属性为主键。 在画布中实体对象的弹出式菜单选项包括: 选项 描述 设计实体 在“实体设计器”中编

  • 若要添加一个新的实体,点击工具栏的 “实体”按钮,并点击画布的任意位置。你可以从浏览器的模型选项卡添加一个现有的实体,简单地从模型选项卡拖放实体到画布。 如果图表符号设置为默认, 图标代表属性为一个主键。而 图标则代表属性为一个索引。 【注意】如果你按住 Control 键并点按属性,你可以选择添加、插入、删除、重命名属性及设置属性为主键。 在画布中实体对象的弹出式菜单选项包括: 选项 描述 设计

  • 我想允许用户重置他们的密码。为了做到这一点,我首先检查他们的电子邮件是否存在于数据库中,如果存在,我向他们发送一封电子邮件,其中包含指向重置密码页面的链接。为了确保链接是安全的,后者是用jwt令牌制作的,该令牌仅对15mn有效。 但是,无法访问该url,因为有“.”在jwt中: < code > http://www . myapp . com/reset-password/eyjhbgcioin

  • 是否可以将oauth1 3LO访问令牌和机密迁移到oauth2刷新令牌? 1){“错误”:“unauthorized_client”} 从云控制台使用有效的client_id和client_secret。看起来client_secret是错误的,但我们重新检查并使用了不同的应用程序--同样的问题。 2)我们有一个测试web oauth2应用程序,错误为:{“error”:“disabled_cli