一、引入依赖。
最小依赖如下:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.5</version>
</dependency>
httpclient依赖commons-logging,多数框架下都使用slf4j的api,因此建议统一转换为slf4j的 ,在上面的依赖中,添加如下代码:
<!-- 日志转换 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
二、httpclient使用中可能需要配置的类
1、org.apache.http.conn.HttpClientConnectionManager
线程安全。
httpclient中给出的实现类有两个:
1)org.apache.http.impl.conn.BasicHttpClientConnectionManager
* A connection manager for a single connection. This connection manager maintains only one active * connection. Even though this class is fully thread-safe it ought to be used by one execution * thread only, as only one thread a time can lease the connection at a time.
文档讲的很明白的,单链接管理类,对每个HttpRoute只保持一个有效链接,在实际项目中没有使用经验,不做评论。
2)org.apache.http.impl.conn.PoolingHttpClientConnectionManager
线程安全。
默认情况下httpclient对象使用的连接管理类,内部维护一个HttpClientConnection连接池,连接池以HttpRoute为单位保持多个连接以供使用,每次请求会根据HttpRoute优先从池中获取连接,获取不到的情况下在连接数未超过配置时才会创建新连接。