Class 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 Description
      protected Part[] parts
      The MIME parts as set by the constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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