介绍
Apache HttpComponents™项目负责创建和维护一个专注于HTTP和相关协议的低级Java组件工具集。
该项目在Apache软件基金会( http://www.apache.org )下运行,并且是很大的开发人员和用户社区的一部分。
超文本传输协议(HTTP)可能是当今Internet上使用的最重要的协议。 Web服务,支持网络的设备和网络计算的发展继续将HTTP协议的作用扩展到用户驱动的Web浏览器之外,同时增加了需要HTTP支持的应用程序的数量。
HttpComponents专为扩展而设计,同时为基本HTTP协议提供强大支持。对于构建支持HTTP的客户端和服务器应用程序(如Web浏览器,Web spiders,HTTP代理,Web服务传输库,或者,利用或扩展HTTP协议以进行分布式通信的系统)都可能对HttpComponents感兴趣。
结构
Apache HttpComponents包括HttpCore、HttpClient和Asynch HttpClient三部分。
HttpComponents Core
HttpCore是一组低级HTTP传输组件,可用于以最小的占用空间构建自定义客户端和服务器端HTTP服务。 HttpCore支持两种I / O模型:基于经典Java I / O的阻塞I / O模型和基于Java NIO的事件驱动的非阻塞I / O模型。
阻塞I / O模型更适合于数据密集型,低延迟场景中。而非阻塞模式可能更适合于高延迟场景,在那里原始数据吞吐量与处理数千个并发的HTTP连接的能力相比,不太重要。
HttpCore不是
- HttpClient的替代品
- Servlet APIs的替代品
HttpComponents Client
HttpClient是一个基于HttpCore的HTTP/1.1兼容的HTTP代理实现。 它还为客户端身份验证,HTTP状态管理和HTTP连接管理提供可重用的组件。 HttpComponents Client是Commons HttpClient 3.x的继承者和替代品。 强烈建议Commons HttpClient的用户升级。
HttpClient不是
- HttpClient不是浏览器。它是一个客户端的HTTP通信库。HttpClient的目的是传输和接收HTTP消息。HttpClient不会尝试处理内容、执行嵌入在HTML页面中的javascript、猜测内容类型(如果没有显式设置)、重新格式化请求/重写位置uri、或其他与HTTP传输无关的功能。
HttpComponents AsyncClient
Asynch HttpClient是一个基于HttpCore NIO和HttpClient组件的HTTP/1.1兼容的HTTP代理实现。它是Apache HttpClient的一个补充模块,适用于处理大量并发的能力比原始数据吞吐量的性能更重要的特殊情况。