首页 > 解决方案 > HttpClient 无法从运行超过一小时的 rest api 获得任何响应

问题描述

我们必须消耗一个运行长时间工作的rest api。我们使用 apache http cient 来使用 api,但如果作业运行时间超过一定时间,比如一小时。即使工作已经完成,我们的客户也只是挂在那里等待响应。

从长远来看,使用 curl 发布到 api 似乎很好。

标签: restcurlhttpclient

解决方案


我刚刚找到了解决方案

        SocketConfig socketConfig = SocketConfig.custom().setSoKeepAlive(true).setSoTimeout(360000000).build(); //We need to set socket keep alive
    RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(360000000).build();
    CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).
            setDefaultSocketConfig(socketConfig).build();

所以默认情况下 curl 保持套接字活动,所以我需要在 java 中做同样的事情。希望 spring resttemplate 有相同的


推荐阅读