The Hyper-Text Transfer Protocol (HTTP) is perhaps the most significant protocol used on the Internet today. Web services, network-enabled appliances and the growth of network computing continue to expand the role of the HTTP protocol beyond user-driven web browsers, while increasing the number of applications that require HTTP support.
Designed for extension while providing robust support for the base HTTP protocol, the HttpComponents may be of interest to anyone building HTTP-aware client and server applications such as web browsers, web spiders, HTTP proxies, web service transport libraries, or systems that leverage or extend the HTTP protocol for distributed communication.
The Apache HttpComponents project is charged with developing and maintaining Commons HttpClient. Commons HttpClient is the current stable library of choice for most users. Commons HttpClient 3 will be maintained until Apache HttpClient 4 is deemed stable enough to supersede it for use in production.
The HttpComponents project is in the process of developing low-level libraries for several aspects of the HTTP protocol. Users with advanced needs in server- or client-side HTTP communication may find this a useful toolset to build custom HTTP services.
The HttpCore components implement the most fundamental aspects of the HTTP protocol. They are nonetheless sufficient to develop basic client-side and server-side HTTP services with a minimal footprint and no external dependencies.
HttpCore consists of several modules
HttpCore base module
This module contains the HttpCore public API and the default implementation based on the Java classic (blocking) I/O model. It requires a Java 1.3 compatible runtime and has no dependency on any external libraries.
HttpCore NIO extensions
HttpCore NIO extensions contain optional components that leverage the event driven, non-blocking I/O (NIO) model. HttpCore NIO extensions require a Java 5.0 compatible runtime and the HttpCore base module.
HttpCore NIO extensions are intended for those usage scenarios where raw throughput is less important than the ability to handle thousands of simultaneous HTTP connections in a resource efficient manner.
HttpClient developed by the HttpComponents project serves as an easy to use facade to the lower level components of HttpCore, HttpAuth, HttpCookie, and HttpConn. It is intended as successor of and replacement for Jakarta Commons HttpClient 3.x
HttpConn (presently included in HttpClient)
HttpConn will provide an API and a number of default implementations of components for efficient management of HTTP connections
HttpCookie (presently included in HttpClient)
HttpCookie will provide an abstract API and pluggable implementations of standard cookie policies such as those based on RFC 2109 and RFC 2965 specifications as well as cookie policies compatible with Netscate Cookie draft and common practices of popular web browsers
HttpAuth (presently included in HttpClient)
HttpAuth will provide an abstract API and pluggable implementations of standard authentication schemes such as Basic, Digest and Kerberos (SPNEGO)