小编s k*_*s k的帖子

在 OkHttp 拦截器中刷新令牌

我正在编写一个拦截器,这样当我得到 401 时,我会使用刷新令牌在后台获取新的访问令牌,然后将该令牌添加到请求中。

代码示例:

    @Override
    public Response intercept(final Chain chain) throws IOException {
        Request request = chain.request();
        Response response = chain.proceed(request);

        if (response.code() != 200) {
            try {
                new TokenRequestTask(tokenRequest, request, OkHttpresponse, chain).execute().get(5000, TimeUnit.MILLISECONDS);
                response = chain.proceed(request);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            } catch (TimeoutException e) {
                e.printStackTrace();
            }
        }
        return response;
    }
Run Code Online (Sandbox Code Playgroud)

在异步任务中postExecution,我通过添加收到的新身份验证令牌来更改请求的标头。但问题是输出不符合预期。该函数返回旧响应,因为异步任务的结果在此之后。理想情况下,它应该等待异步任务结果然后返回但没有发生。如何实现这一目标

android android-asynctask okhttp retrofit2

7
推荐指数
1
解决办法
1489
查看次数

标签 统计

android ×1

android-asynctask ×1

okhttp ×1

retrofit2 ×1