`
supben
  • 浏览: 330138 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HttpClient 4.3 链接复用 和 和设置 timeout 的方法

 
阅读更多
import org.apache.http.HttpResponse;
import org.apache.http.conn.ConnectionKeepAliveStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.protocol.HttpContext;

/**
 * http连接池
 * @author shencl
 */

public class HttpPool {

	static CloseableHttpClient httpClient = null;

	public static synchronized CloseableHttpClient getHttpClient() {

		if (httpClient == null) {
			PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
			// 连接池最大连接数
			cm.setMaxTotal(200);
			// 单条链路最大连接数(一个ip+一个端口 是一个链路)
			cm.setDefaultMaxPerRoute(100);
			// 指定某条链路的最大连接数

			ConnectionKeepAliveStrategy kaStrategy = new DefaultConnectionKeepAliveStrategy() {
				@Override
				public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
					long keepAlive = super.getKeepAliveDuration(response, context);
					if (keepAlive == -1) {
						keepAlive = 60000;
					}
					return keepAlive;
				}

			};

			 httpClient = HttpClients.custom().setConnectionManager(cm).setKeepAliveStrategy(kaStrategy).build();
		}

		return httpClient;
	}

}

 

 

 

 

	private static int CONNECT_TIMEOUT = 10000;
	private static int SOCKE_TTIMEOUT = 10000;
	private static int CONNECTION_REQUEST_TIMEOUT = 1000;

  CloseableHttpClient httpClient = HttpPool.getHttpClient();
		HttpGet httpGet = new HttpGet(url);
		RequestConfig requestConfig = RequestConfig.custom()  
		        .setConnectTimeout(CONNECT_TIMEOUT)
		        .setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT)
		        .setSocketTimeout(SOCKE_TTIMEOUT).build();  
		httpGet.setConfig(requestConfig);  
			CloseableHttpResponse response = httpClient.execute(httpGet);
			Integer code = response.getStatusLine().getStatusCode();
			HttpEntity entity = response.getEntity();

 

0
2
分享到:
评论
1 楼 grylls 2017-04-28  
CloseableHttpClient只有一个,如果是多个host怎么处理

相关推荐

    httpclient4.3工具类

    在这个`httpclient4.3工具类`中,我们看到的是一个自定义的`httpclientUtils`,它是为了满足特定项目需求而编写的,集成了常见的HTTP操作。 HttpClient 4.3主要知识点包括: 1. **连接管理**:HttpClient 4.3引入...

    httpclient4.3.x及其依赖jar包

    HttpClient 4.3.x是该库的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更方便地与Web服务器进行交互。在本文中,我们将深入探讨HttpClient 4.3.x的核心特性、依赖关系以及如何在实际项目中应用。 **...

    httpclient4.3 封装工具类

    HttpClient 4.3版本是对该库的一次重要更新,提供了更多的功能和优化。这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接...

    httpclient4.3 和 httpcore4.4

    本文将深入探讨HttpClient 4.3和HttpCore 4.4这两个版本的关键特性、改进及使用方法。 HttpClient 4.3是一个重大的更新,它引入了诸多增强功能和性能优化。首先,HttpClient 4.3支持了HTTP/1.1和HTTP/2协议,使...

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    httpClient4.3官方包

    这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...

    httpClient4.3

    HttpClient 4.3 版本是该库的一个稳定版本,提供了许多改进和新特性,以增强性能和易用性。 HttpClient 4.3 的核心概念包括: 1. **HttpClient 实例**:这是执行 HTTP 请求的基础。开发者通常会创建一个 ...

    HttpClient4.3需要的jar

    这个压缩包包含了HttpClient 4.3版本所需的jar文件和其他依赖库,以确保能够正确运行基于HttpClient的Java应用。 在HttpClient 4.3中,主要知识点包括: 1. **基本概念**:HttpClient是一个客户端编程工具包,它...

    HTTPClient 4.3.X

    描述中提到的链接指向了一个ITEYE博客,虽然内容未给出,但可以推测博主可能分享了关于使用HTTPClient 4.3.X的一些经验,可能包括配置,最佳实践,或者是遇到的问题及解决方案。 标签 "源码" 暗示我们可能会讨论到...

    httpclient-4.3.jar

    1. HTTP协议支持:HttpClient 4.3全面支持HTTP/1.1和部分HTTP/2规范,包括GET、POST、PUT、DELETE等多种HTTP方法,以及Cookie管理、重定向处理、连接管理和认证等机制。 2. 连接管理:HttpClient 4.3引入了更高效的...

    httpclient 4.3 中文版

    ### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...

    httpclient4.3所需jar包

    本知识点将详细介绍HTTPClient 4.3在爬虫开发中的应用及其主要组件。 一、HTTPClient 4.3的安装与引入 在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖...

    HttpClient4.3教程共51页.pdf.zip

    3. **多路复用**:HttpClient 4.3支持HTTP/1.1的Keep-Alive和HTTP/2的多路复用,可以减少网络延迟,提高请求处理速度。 4. **请求构建器**:HttpClient提供了RequestBuilder类,方便用户构建复杂的HTTP请求,包括...

    httpclient4.3 设置代理

    javase http通讯技术 apache httpclient4.3 设置代理详解

    httpclient4.3登陆人人

    标题中的“httpclient4.3登陆人人”指的是使用Apache HttpClient 4.3版本实现对人人网的自动登录功能。HttpClient是一个流行的开源Java库,它允许开发者执行HTTP请求并处理响应,广泛应用于网络爬虫、自动化测试和...

    HttpClient 4.3教程.rar

    本教程将详细介绍HttpClient 4.3的主要特性和使用方法。 一、HttpClient简介 HttpClient是一个Java库,它允许开发人员执行HTTP和HTTPS请求,并处理响应。它支持各种HTTP方法(如GET、POST、PUT、DELETE等),提供了...

    httpclient4.3 封装工具类.zip

    这个压缩包“httpclient4.3 封装工具类.zip”很可能包含了一些预先封装好的工具类,用于简化使用HttpClient进行网络请求的过程。以下是一些关于HttpClient 4.3以及如何封装工具类的关键知识点: 1. **HttpClient ...

    httpClient4.3文档 PDF

    HttpClient 4.3的文档详细介绍了这些功能的使用方法和示例,包括错误处理、性能调优、高级特性的应用等。通过阅读这份文档,开发者可以深入理解HttpClient的工作原理,从而更好地在实际项目中运用它。 总之,...

    httpclient4.3中文教程

    此外,HttpClient 还支持设置请求头、身份验证、连接管理、超时控制等高级功能,以满足各种复杂的网络通信需求。 HttpClient 不是浏览器,它不会解析 HTML 内容或执行 JavaScript。它是一个低级别的库,主要用于...

    Httpclient 4.3 jar包

    HttpClient 4.3.x 版本是该库的一个稳定版本,提供了丰富的功能和优化,使得开发者可以方便地处理HTTP通信。这个jar包包括两个主要的组件:`httpclient-4.3.3.jar` 和 `httpmime-4.3.jar`。 1. **HttpClient组件...

Global site tag (gtag.js) - Google Analytics