将所有正在进行的请求放入队列 Retrofit 和 okhttp

Bui*_*Huy 5 android retrofit okhttp retrofit2

我正在处理的问题authenticatorOKHttp,如果出现状态错误,我将重试获取新的访问令牌401,但我的应用程序必须同时调用许多 API,从而导致数据损坏,因为现有的刷新令牌将在请求时被删除 - 但是其他 API 调用者仍然依赖此令牌来使用。所以我的问题是:当我们收到 401 错误状态代码时,是否有办法将请求放入队列(或至少取消)所有其他 api 请求?

这是我的验证器:

 public Request authenticate(Route route, Response response) throws IOException {
       // Refresh your access_token using a synchronous api request
          access_token = getNewAccessTokenHere();
                // Add new header to rejected request and retry it
                return response.request().newBuilder()
                        .header("Authorization", "Bearer " + access_token)
                        .build();
            } else {
                ToastUtil.toast("login again");
                return null;
            }

    }
Run Code Online (Sandbox Code Playgroud)

我的目标是让其他api等待第一个请求的响应并使用新的access_token。

Jes*_*son 2

您可以使用Dispatcher来访问所有飞行中的通话并取消它们。

https://square.github.io/okhttp/3.x/okhttp/okhttp3/Dispatcher.html