Support is present for HTTP/1.1 and HTTP/1.0, plus various authentication schemes and cookie policies.
Thanks to it's widespread use and years of development, it is a very mature and stable codebase.
However, due to limitations in the API design, Commons HttpClient will eventually be replaced by HttpClient 4.0 with a completely redesigned API based on HttpCore.
Here are some key features of "Apache Commons HttpClient":
· Standards based, pure Java, implementation of HTTP versions 1.0 and 1.1
· Full implementation of all HTTP methods (GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE) in an extensible OO framework.
· Supports encryption with HTTPS (HTTP over SSL) protocol.
· Granular non-standards configuration and tracking.
· Transparent connections through HTTP proxies.
· Tunneled HTTPS connections through HTTP proxies, via the CONNECT method.
· Transparent connections through SOCKS proxies (version 4 & 5) using native Java socket support.
· Authentication using Basic, Digest and the encrypting NTLM (NT Lan Manager) methods.
· Plug-in mechanism for custom authentication methods.
· Multi-Part form POST for uploading large files.
· Pluggable secure sockets implementations, making it easier to use third party solutions
· Connection management support for use in multi-threaded applications. Supports setting the maximum total connections as well as the maximum connections per host. Detects and closes stale connections.
· Automatic Cookie handling for reading Set-Cookie: headers from the server and sending them back out in a Cookie: header when appropriate.
· Plug-in mechanism for custom cookie policies.
· Request output streams to avoid buffering any content body by streaming directly to the socket to the server.
· Response input streams to efficiently read the response body by streaming directly from the socket to the server.
· Persistent connections using KeepAlive in HTTP/1.0 and persistance in HTTP/1.1
· Direct access to the response code and headers sent by the server.
· The ability to set connection timeouts.
· HttpMethods implement the Command Pattern to allow for parallel requests and efficient re-use of connections.
· Source code is freely available under the Apache Software License.
· RFC1945 Hypertext Transfer Protocol -- HTTP/1.0
· RFC2616 Hypertext Transfer Protocol -- HTTP/1.1
· RFC2617 HTTP Authentication: Basic and Digest Access Authentication
· RFC2109 HTTP State Management Mechanism (Cookies)
· RFC2396 Uniform Resource Identifiers (URI): Generic Syntax
· RFC1867 Form-based File Upload in HTML