相关疑难解决方法(0)

Apache HttpClient超时

有没有办法为整个执行指定超时HttpClient

我尝试过以下方法:

httpClient.getParams().setParameter("http.socket.timeout", timeout * 1000);
httpClient.getParams().setParameter("http.connection.timeout", timeout * 1000);
httpClient.getParams().setParameter("http.connection-manager.timeout", new Long(timeout * 1000));
httpClient.getParams().setParameter("http.protocol.head-body-timeout", timeout * 1000);
Run Code Online (Sandbox Code Playgroud)

它实际上工作正常,除非远程主机发回数据 - 即使在一个字节/秒 - 它将继续永远读取!但我想在10秒内中断连接,无论主机是否响应.

java timeout apache-httpclient-4.x

50
推荐指数
4
解决办法
6万
查看次数

在SpringBoot 2.1.x中使用RestTemplateBuilder的requestFactory的自定义RestTemplate与1.5.x版本不向后兼容

Spring Boot 1.5.x中,我正在创建RestTemplate如下的自定义:

@Bean
  public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
    PoolingHttpClientConnectionManager poolingConnectionManager = new PoolingHttpClientConnectionManager();
    poolingConnectionManager.setMaxTotal(restTemplateProps.getMaxConnectionsPerPool());
    poolingConnectionManager.setDefaultMaxPerRoute(restTemplateProps.getMaxDefaultConnectionPerRoute());
    CloseableHttpClient client = HttpClientBuilder.create().setConnectionManager(poolingConnectionManager).build();
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
        new HttpComponentsClientHttpRequestFactory(client);
    clientHttpRequestFactory.setConnectTimeout(restTemplateProps.getConnectionTimeout());
    clientHttpRequestFactory.setReadTimeout(restTemplateProps.getSocketTimeout());
    return restTemplateBuilder.requestFactory(clientHttpRequestFactory).build();
  }
Run Code Online (Sandbox Code Playgroud)

但是,在迁移到Spring Boot 2.1.x之后,上面的代码无法编译。看起来好像requestFactoryHttpComponentsClientHttpRequestFactory作为输入参数。

谁能建议我如何在Spring Boot 2.1.x中实现以上代码?

java resttemplate spring-boot

8
推荐指数
3
解决办法
4765
查看次数