org.apache.commons.httpclient.methods.multipart

Class MultipartRequestEntity

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

protected Part[]
parts
The MIME parts as set by the constructor

Constructor Summary

MultipartRequestEntity(Part[] parts, HttpMethodParams params)
Creates a new multipart entity containing the given parts.

Method Summary

long
getContentLength()
String
getContentType()
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(OutputStream out)

Field Details

parts

protected Part[] parts
The MIME parts as set by the constructor

Constructor Details

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 Details

getContentLength

public long getContentLength()
Specified by:
getContentLength in interface RequestEntity

getContentType

public String getContentType()
Specified by:
getContentType in interface RequestEntity

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

writeRequest

public void writeRequest(OutputStream out)
            throws IOException
Specified by:
writeRequest in interface RequestEntity

Copyright (c) 1999-2005 - Apache Software Foundation