MultipartRequestEntity (HttpClient Library (Version 3.1))
Date: 2019-01-01

org.apache.commons.httpclient.methods.multipart

## Class MultipartRequestEntity

- java.lang.Object
- - org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity

- All Implemented Interfaces:
    RequestEntity

      public class MultipartRequestEntity
      extends java.lang.Object
      implements RequestEntity

  Implements a request entity suitable for an HTTP multipart POST method.

  The HTTP multipart POST method is defined in section 3.3 of RFC1867:

  > The media-type multipart/form-data follows the rules of all multipart MIME data streams as outlined in RFC 1521. The multipart/form-data contains a series of parts. Each part is expected to contain a content-disposition header where the value is "form-data" and a name attribute specifies the field name within the form, e.g., 'content-disposition: form-data; name="xxxxx"', where xxxxx is the field name corresponding to that field. Field names originally in non-ASCII character sets may be encoded using the method outlined in RFC 1522.

  This entity is designed to be used in conjunction with the `post method` to provide multipart posts. Example usage:

        File f = new File("/path/fileToUpload.txt");
        PostMethod filePost = new PostMethod("http://host/some_path");
        Part[] parts = {
            new StringPart("param_name", "value"),
            new FilePart(f.getName(), f)
        };
        filePost.setRequestEntity(
            new MultipartRequestEntity(parts, filePost.getParams())
            );
        HttpClient client = new HttpClient();
        int status = client.executeMethod(filePost);

  Since:
    3.0

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Part[]` | `parts` The MIME parts as set by the constructor

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultipartRequestEntity(Part[] parts, HttpMethodParams params)` Creates a new multipart entity containing the given parts.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `getContentLength()` Gets the request entity's length.
    `java.lang.String` | `getContentType()` Gets the entity's content type.
    `protected byte[]` | `getMultipartBoundary()` Returns the MIME boundary string that is used to demarcate boundaries of this part.
    `boolean` | `isRepeatable()` Returns `true` if all parts are repeatable, `false` otherwise.
    `void` | `writeRequest(java.io.OutputStream out)` Writes the request entity to the given stream.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### parts

          protected Part[] parts

      The MIME parts as set by the constructor

  - ### Constructor Detail

    - #### MultipartRequestEntity

          public MultipartRequestEntity(Part[] parts,
                                        HttpMethodParams params)

      Creates a new multipart entity containing the given parts.
      Parameters:
        `parts` - The parts to include.
        `params` - The params of the HttpMethod using this entity.

  - ### Method Detail

    - #### getMultipartBoundary

          protected byte[] getMultipartBoundary()

      Returns the MIME boundary string that is used to demarcate boundaries of this part. The first call to this method will implicitly create a new boundary string. To create a boundary string first the HttpMethodParams.MULTIPART_BOUNDARY parameter is considered. Otherwise a random one is generated.
      Returns:
        The boundary string of this entity in ASCII encoding.

    - #### isRepeatable

          public boolean isRepeatable()

      Returns `true` if all parts are repeatable, `false` otherwise.
      Specified by:
        `isRepeatable` in interface `RequestEntity`
      Returns:
        `true` if the entity can be written to `OutputStream` more than once, `false` otherwise.
      See Also:
        `RequestEntity.isRepeatable()`

    - #### writeRequest

          public void writeRequest(java.io.OutputStream out)
                            throws java.io.IOException

      Description copied from interface: `RequestEntity`
      Writes the request entity to the given stream.
      Specified by:
        `writeRequest` in interface `RequestEntity`
      Throws:
        `java.io.IOException`

    - #### getContentLength

          public long getContentLength()

      Description copied from interface: `RequestEntity`
      Gets the request entity's length. This method should return a non-negative value if the content length is known or a negative value if it is not. In the latter case the `EntityEnclosingMethod` will use chunk encoding to transmit the request entity.
      Specified by:
        `getContentLength` in interface `RequestEntity`
      Returns:
        a non-negative value when content length is known or a negative value when content length is not known

    - #### getContentType

          public java.lang.String getContentType()

      Description copied from interface: `RequestEntity`
      Gets the entity's content type. This content type will be used as the value for the "Content-Type" header.
      Specified by:
        `getContentType` in interface `RequestEntity`
      Returns:
        the entity's content type
      See Also:
        `HttpMethod.setRequestHeader(String, String)`

Copyright (c) 1999-2005 - Apache Software Foundation