<html>
<head>
<!--
/*
 * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/package.html $
 * $Revision: 496070 $
 * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 2007) $
 *
 * ====================================================================
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 */
-->
</head>
<body>
Representations for HTTP message entities.

An {@link org.apache.http.HttpEntity entity} is the optional content of a
{@link org.apache.http.HttpMessage message}.
You'll find a basic selection of entity implementations here.
If you need to send an entity, you can provide it for example as a
{@link org.apache.http.entity.ByteArrayEntity byte array},
{@link org.apache.http.entity.StringEntity string},
{@link org.apache.http.entity.FileEntity file}, or through an arbitrary
{@link org.apache.http.entity.InputStreamEntity input stream}.
If you receive a message with an entity, you typically get that as a
{@link org.apache.http.entity.BasicHttpEntity basic} entity.
Entity implementations can be
{@link org.apache.http.entity.HttpEntityWrapper wrapped},
for example to
{@link org.apache.http.entity.BufferedHttpEntity buffer}
the content in memory.



</body>
</html>
