HttpClient是Apache中的一个开源项目。它实现了HTTP标准中Client端的所有功能。使用它能够很容易地进行Http信息的传输。
使用传统JDK自带的URLConnnection是有些不方便的。所以我们使用HttpClient。HttpClient是Apache Jackarta common下的小项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。
// apche httpclient的maven依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
使用HttpClient发送请求,接受响应很简单,一般需要如下几步:
英文API网址:https://javadoc.io/doc/org.apache.httpcomponents/httpclient/latest/index.html
这个接口仅代表Http请求执行的最基本的契约。它对请求执行过程没有施加任何限制或特定细节,而将状态管理、身份验证和重定向细节留给单独的实现。
方法(常用):
execute(HttpUriRequest request):使用默认上下文执行Http请求。
CloseableHttpClient实例的构建器。当特定成分(一些设置)没有显示设置时,该类将使用其默认实现。当在调用build()之前调用useSystemProperties()方法时,在配置默认实现时将考虑系统属性
方法(常用):
addInterceptorFirst(org.apache.http.HttpRequestInterceptor itcp):将此协议拦截器添加到协议处理列表的头部。参数:HttpRequestInterceptor/HttpResponseInterceptor
addInterceptorLast(org.apache.http.HttpRequestInterceptor itcp): 将此协议拦截器添加到协议处理列表的尾部。参数同上
build():public CloseableHttpClient build()
create():public static HttpClientBuilder create()
[createMainExec](https://javadoc.io/static/org.apache.httpcomponents/httpclient/4.5.13/org/apache/http/impl/client/HttpClientBuilder.html#createMainExec(org.apache.http.protocol.HttpRequestExecutor, org.apache.http.conn.HttpClientConnectionManager, org.apache.http.ConnectionReuseStrategy, org.apache.http.conn.ConnectionKeepAliveStrategy, org.apache.http.protocol.HttpProcessor, org.apache.http.client.AuthenticationStrategy, org.apache.http.client.AuthenticationStrategy, org.apache.http.client.UserTokenHandler))(org.apache.http.protocol.HttpRequestExecutor requestExec, HttpClientConnectionManager connManager, org.apache.http.ConnectionReuseStrategy reuseStrategy, ConnectionKeepAliveStrategy keepAliveStrategy, org.apache.http.protocol.HttpProcessor proxyHttpProcessor, AuthenticationStrategy targetAuthStrategy, AuthenticationStrategy proxyAuthStrategy, UserTokenHandler userTokenHandler):生成ClientExecChain的一个实例,用作主执行器。
disableAuthCaching():禁用身份验证方案缓存。
disableAutomaticRetries():禁用自动请求恢复和重新执行。
disableConnectionState():禁用连接状态跟踪。
setBackoffManager(BackoffManager backoffManager):分配BackoffManager实例。
setConnectionManagerShared(boolean shared):定义要由多个客户端实例共享的连接管理器。
[setConnectionTimeToLive](https://javadoc.io/static/org.apache.httpcomponents/httpclient/4.5.13/org/apache/http/impl/client/HttpClientBuilder.html#setConnectionTimeToLive(long, java.util.concurrent.TimeUnit))(long connTimeToLive, TimeUnit connTimeToLiveTimeUnit):设置持久连接的最大存活时间
setDefaultConnectionConfig(org.apache.http.config.ConnectionConfig config):分配默认ConnectionConfig。
setDefaultHeaders(Collection extends org.apache.http.Header> defaultHeaders):指定默认的请求头值。
setMaxConnPerRoute(int maxConnPerRoute):分配每个路由值的最大连接。
setMaxConnTotal(int maxConnTotal):指定最大的总连接值。
setProxy(org.apache.http.HttpHost proxy):指定默认的代理值。
useSystemProperties():在创建和配置默认实现时使用系统属性。
用于CloseableHttpClient实例的方法工厂。
方法(常用):
createDefault():使用默认配置创建CloseableHttpClient实例。
createMinimal():创建实现最基本的HTTP协议支持的CloseableHttpClient实例。可选参数:HttpClientConnectionManager
createSystem():创建基于系统属性的默认配置的CloseableHttpClient实例。
custom():创建用于构建自定义CloseableHttpClient实例的构建器对象。
GET方法意味着检索由Request-URI标识的任何信息(以实体的形式)。如果Request-URI指向一个产生数据的过程,那么在响应中返回的应该是产生的数据,而不是过程的源文本,除非该文本恰好是过程的输出。
方法(常用):
HttpGet():构造方法
HttpGet(String uri):构造方法
HttpGet(URI uri):构造方法
方法继承自类org.apache.http.client.methods.HttpRequestBase:getConfig, getProtocolVersion, getRequestLine, getURI, releaseConnection, setConfig, setProtocolVersion, setURI, started, toString
方法继承自类org.apache.http.message.AbstractHttpMessage:addHeader, addHeader, containsHeader, getAllHeaders, getFirstHeader, getHeaders, getLastHeader, getParams, headerIterator, headerIterator, removeHeader, removeHeaders, setHeader, setHeader, setHeaders, setParams
…
```java
@Contract(threading=SAFE)
public abstract class CloseableHttpClient
extends Object
implements HttpClient, Closeable
```
HttpClient的基本实现,它也实现了Closeable。
方法(常用):
execute(HttpUriRequest request):使用默认上下文执行HTTP请求。
public interface CloseableHttpResponse
HttpResponse接口的扩展版本,它也扩展了Closeable。
方法(常用):
方法继承自接口org.apache.http.HttpResponse:getEntity, getLocale, getStatusLine, setEntity, setLocale, setReasonPhrase, setStatusCode, setStatusLine, setStatusLine, setStatusLine
方法继承自接口org.apache.http.HttpMessage:
addHeader, addHeader, containsHeader, getAllHeaders, getFirstHeader, getHeaders, getLastHeader, getParams, getProtocolVersion, headerIterator, headerIterator, removeHeader, removeHeaders, setHeader, setHeader, setHeaders, setParams
…