httpclien各个版本超时时间设置

原帖出处:http://my.oschina.net/u/577453/blog/173724

 

 

3.X

HttpClient httpClient= new DefaultHttpClient();
4.3
CloseableHttpClient httpClient = HttpClients.createDefault();
3.X的超时设置方法
HttpClient client = new HttpClient();
client.setConnectionTimeout( 30000 ); 
client.setTimeout( 30000 );
HttpClient httpClient= new HttpClient();
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout( 5000 );
4.X版本超时设置(4.3后已过时)
HttpClient httpClient= new DefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000 ); //连接时间
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000 ); //数据传输时间
4.3版本超时设置
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet= new HttpGet( "http://www.baidu.com" );//HTTP Get请求(POST雷同)
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout( 2000 ).setConnectTimeout( 2000 ).build(); //设置请求和传输超时时间
httpGet.setConfig(requestConfig);
httpClient.execute(httpGet); //执行请求
 
 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Feign 中使用 HttpClient 连接池可以提高性能和资源利用率,避免重复创建和关闭连接。下面是整合的步骤: 1. 添加依赖 在 pom.xml 中添加以下依赖: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version> </dependency> ``` 2. 配置 HttpClient 在 Spring Boot 中,可以使用 HttpClientBuilder 来构建 HttpClient,并配置连接池参数: ```java @Configuration public class HttpClientConfig { @Value("${httpclient.max-total}") private int maxTotal; @Value("${httpclient.default-max-per-route}") private int defaultMaxPerRoute; @Bean public CloseableHttpClient httpClient() { PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); connectionManager.setMaxTotal(maxTotal); connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute); return HttpClientBuilder.create() .setConnectionManager(connectionManager) .build(); } } ``` 其中,maxTotal 表示连接池最大连接数,defaultMaxPerRoute 表示每个路由(域名)最大连接数。 3. 配置 Feign 在 Feign 中配置 HttpClient,需要实现 HttpClient 的 Client 接口,具体如下: ```java public class HttpClientFeignClient implements Client { private final CloseableHttpClient httpClient; public HttpClientFeignClient(CloseableHttpClient httpClient) { this.httpClient = httpClient; } @Override public Response execute(Request request, Request.Options options) throws IOException { HttpClientContext context = HttpClientContext.create(); HttpUriRequest httpUriRequest = toHttpUriRequest(request); CloseableHttpResponse httpResponse = httpClient.execute(httpUriRequest, context); return toResponse(httpResponse); } private HttpUriRequest toHttpUriRequest(Request request) { String method = request.method(); String url = request.url(); Request.Body body = request.body(); HttpEntityEnclosingRequestBase httpUriRequest; switch (method) { case "GET": httpUriRequest = new HttpGet(url); break; case "POST": httpUriRequest = new HttpPost(url); break; case "PUT": httpUriRequest = new HttpPut(url); break; case "DELETE": httpUriRequest = new HttpDelete(url); break; default: throw new UnsupportedOperationException("unsupported http method: " + method); } if (body != null) { httpUriRequest.setEntity(new ByteArrayEntity(body.asBytes())); } return httpUriRequest; } private Response toResponse(CloseableHttpResponse httpResponse) throws IOException { int statusCode = httpResponse.getStatusLine().getStatusCode(); String reasonPhrase = httpResponse.getStatusLine().getReasonPhrase(); Map<String, Collection<String>> headers = new HashMap<>(); for (Header header : httpResponse.getAllHeaders()) { String name = header.getName(); String value = header.getValue(); headers.computeIfAbsent(name, k -> new ArrayList<>()).add(value); } Response.Builder builder = Response.builder() .status(statusCode) .reason(reasonPhrase) .headers(headers); HttpEntity entity = httpResponse.getEntity(); if (entity != null) { InputStream inputStream = entity.getContent(); byte[] bodyData = ByteStreams.toByteArray(inputStream); builder.body(bodyData); } return builder.build(); } } ``` 最后,在 Feign 的配置类中,使用上述实现类作为 Client: ```java @Configuration public class FeignConfig { @Autowired private CloseableHttpClient httpClient; @Bean public Client feignClient() { return new HttpClientFeignClient(httpClient); } } ``` 这样就完成了 Feign 整合 HttpClient 连接池的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值