HttpClient - Proposal
Author: Commons Documentation Team

##### Overview

- Features
- News
- Status
- Download
- Wiki
- User Guide
  - Authentication Guide
  - Character Encodings
  - Cookies
  - Exception Handling
  - Logging Guide
  - Methods
  - Optimization Guide
  - Preference Architecture
  - Redirects Handling
  - Sample Code
  - SSL Guide
  - Threading
  - Trouble Shooting
  - Tutorial
- Developer Guide

##### Project Documentation

- About
- Project Info
- Project Reports
- Development Process

##### Legend

- External Link
- Opens in a new window

## Rationale

HTTP is the main protocol used today on the internet. Although the JDK includes basic support for building HTTP-aware client applications, it doesn't provide the flexibility or ease of use needed for many projects.

A Commons package would give committers an opportunity to coordinate their efforts to create and maintain a efficient, feature-rich package under the ASF license.

## Scope of the Package

The package shall create and maintain a Java library implementing the client side of the HTTP/1.1 protocol, as defined in RFC 2616 and RFC 2617.

The package should :

- Have an API which should be as simple to use as possible
- Be as easy to extend as possible
- Provide unconditional support for HTTP/1.1

The package is quite different from the HTTP client provided as part of the JDK (java.net.HttpURLConnection), as it focuses on the HTTP methods being sent (instead of making that transparent to the user), and generally allows more interaction with the lower level connection. The JDK client is also not very intuitive to use.

The package is used by the Slide project to build a WebDAV client library supporting WebDAV level 2.

## Interaction With Other Packages

HttpClient relies on:

- Java Development Kit (Version 1.1 or later; 1.3 or later recommended)

## Initial Source of the Package

The initial codebase exists in the jakarta-slide cvs tree under the org.apache.webdav.lib package. It would be moved to commons under the http subdirectory.

The proposed package name for the new component is org.apache.commons.httpclient.

## Required Jakarta-Commons Resources

- CVS Repository - New directory `httpclient` in the `jakarta-commons` CVS repository.
- Initial Committers - The list is provided below. Some of the proposed committers are not currently jakarta-commons committers, but are committers on the jakarta-slide project, and contributed to this component.
- Mailing List - Discussions will take place on the general jakarta-commons@jakarta.apache.org mailing list. To help list subscribers identify messages of interest, it is suggested that the message subject of messages about this component be prefixed with [httpclient].
- Bugzilla - New component "HttpClient" under the "Commons" product category, with appropriate version identifiers as needed.
- Jyve FAQ - New category "commons-httpclient" (when available).

## Initial Committers

The initial committers on the HttpClient component shall be:

- Remy Maucherat
- B.C.Holmes
- Sung-Gu Park
- Juergen Pill
- Costin Manolache

## Proposal ChangeLog

2002/07/19 - Replace uses of HTTP Client with HttpClient for consistency.