gpt4 book ai didi

java - 来自客户端的超时 web 服务调用

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

我正在使用 RestEasy Client 调用网络服务。一项要求是,如果调用运行超过 5 秒,则中止/超时调用。我将如何使用 RestEasy Client 实现这一目标?我只看到服务器端超时,即如果在特定时间内未完成请求,Rest Easy 网络服务将使请求超时。

最佳答案

RESTEasy 客户端通常使用 Apache HttpClient 来处理网络对话。

您可以使用自己的自定义超时参数覆盖 HttpClient 属性:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(params, socketTimeoutMillis);

第一个参数允许您指定建立初始连接的超时时间,第二个参数允许您指定套接字在没有数据发送时等待的最长时间。

您可以使用修改后的 HttpClient 来构建您的 ClientExecutor:

ClientExecutor executor = new ApacheHttpClient4Executor(httpClient);

可以依次使用它来构建 ClientRequest 对象。或者,如果您使用 RESTEasy 的 Spring 配置,则可以将其注入(inject) RestClientProxyFactoryBean。

这与绝对 5 秒超时并不完全相同,但根据您要完成的目标,调整这两个属性通常可以满足要求。

关于java - 来自客户端的超时 web 服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965917/

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