1. 前言
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java应用程序需要直接通过 HTTP 协议来访问网路资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.4 (GA) (2015-02-05)
2.主要功能介绍
1) 实现了HTTP的所有方法(POST、GET、PUT、HEAD等)
2) 支持自动转向
3) 支持 HTTPS 协议
4) 支持代理服务器等
3. 特性
1) 基于标准、纯净的java语言。实现了Http1.0和Http1.1
2) 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
3) 支持HTTPS协议。
4) 通过Http代理建立透明的连接。
5) 利用CONNECT方法通过Http代理建立隧道的https连接。
6) Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。
7) 插件式的自定义认证方案。
8) 便携可靠的套接字工厂使它更容易的使用第三方解决方案。
9) 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。
10) 自动处理Set-Cookie中的Cookie。
11) 插件式的自定义Cookie策略。
12) Request的输出流可以避免流中内容直接缓冲到socket服务器。
13) Response的输入流可以有效的从socket服务器直接读取相应内容。
14) 在http1.0和http1.1中利用KeepAlive保持持久连接。
15) 直接获取服务器发送的response code和 headers。
16) 设置连接超时的能力。
17) 实验性的支持http1.1 response caching。
18) 源代码基于Apache License 可免费获取。