【发布时间】:2017-02-25 08:51:42
【问题描述】:
我正在编写一个拦截器,这样当我收到 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;
}
在 postExecution 的异步任务中,我通过添加收到的新身份验证令牌来更改请求的标头。但问题是输出不符合预期。该函数正在返回旧响应,因为之后异步任务的结果。理想情况下,它应该等待异步任务结果然后返回但没有发生。 如何做到这一点?
【问题讨论】:
标签: android android-asynctask retrofit2 okhttp