Apache HttpComponents Client
============================

Welcome to the HttpClient component of the Apache HttpComponents project.

Building Instructions
---------------------

For building from source instructions please refer to BUILDING.txt.

Dependencies
------------

HttpClient main module requires Java 6 compatible runtime and
depends on the following external libraries:

* Apache HttpComponents HttpCore
* Apache Commons Logging
* Apache Commons Codec

(for detailed information on external dependencies please see pom.xml)

HttpMime module is optional and requires Java 6 compatible runtime
and depends on the following external libraries:

* Apache HttpComponents HttpCore
* Apache Commons Logging

(for detailed information on external dependencies please see pom.xml)

Licensing
---------

Apache HttpComponents Client is licensed under the Apache License 2.0.
See the files called LICENSE.txt and NOTICE.txt for more information.

Cryptographic Software Notice
-----------------------------

This distribution may include software that has been designed for use
with cryptographic software. The country in which you currently reside
may have restrictions on the import, possession, use, and/or re-export
to another country, of encryption software. BEFORE using any encryption
software, please check your country's laws, regulations and policies
concerning the import, possession, or use, and re-export of encryption
software, to see if this is permitted. See <http://www.wassenaar.org/>
for more information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms. The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS
Export Administration Regulations, Section 740.13) for both object
code and source code.

The following provides more details on the included software that
may be subject to export controls on cryptographic software:

  Apache HttpComponents Client interfaces with the
  Java Secure Socket Extension (JSSE) API to provide

    - HTTPS support

  Apache HttpComponents Client does not include any
  implementation of JSSE.

Contact
-------

  o For general information visit the main project site at
    http://hc.apache.org/

  o For current status information visit the status page at
    http://hc.apache.org/status.html
