gpt4 book ai didi

java - 在 RestTemplate 拦截器中调用 execution.execute() 两次

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:03 27 4
gpt4 key购买 nike

我必须与需要随每个请求发送访问 token 的外部服务集成。访问 token 的到期时间很短(只有几个小时)。我决定以乐观的方式使用访问 token 。我将使用当前 token 调用外部服务。如果出现 401,我将刷新 token 并再次调用外部 API。

我决定使用 ClientHttpRequestInterceptor 来实现所描述的重试机制。

public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse response = execution.execute(request, body);
if(response.getStatusCode() == UNAUTHORIZED) {
refreshToken();
updateToken(request);
response = execution.execute(request, body);
}
return response;
}

我已经测试过它并且可以工作,但是是否允许调用 execution.execute() 两次?我还没有找到任何禁止的信息,但另一方面我也没有看到这样的代码。

最佳答案

我们正在做完全相同的事情 - 并且有问题。您拥有的这段代码将泄漏连接,因为原始响应被忽略并且未正确关闭。我目前的解决方案是显式关闭它,然后进行第二次执行。到目前为止似乎有效,但我想它需要更多评估。

关于java - 在 RestTemplate 拦截器中调用 execution.execute() 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45412237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com