org.apache.commons.httpclient.methods

Class MultipartPostMethod

public class MultipartPostMethod extends ExpectContinueMethod

Deprecated: Use {@link org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity} in conjunction with {@link org.apache.commons.httpclient.methods.PostMethod} instead.

Implements the 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.

Since: 2.0

Author: Matthew Albright Jeff Dever Adrian Sutton Mark Diggory Mike Bowler Oleg Kalnichevski

Field Summary
static StringMULTIPART_FORM_CONTENT_TYPE
The Content-Type for multipart/form-data.
Constructor Summary
MultipartPostMethod()
No-arg constructor.
MultipartPostMethod(String uri)
Constructor specifying a URI.
Method Summary
protected voidaddContentLengthRequestHeader(HttpState state, HttpConnection conn)
Adds a Content-Length request header, as long as no Content-Length request header already exists.
protected voidaddContentTypeRequestHeader(HttpState state, HttpConnection conn)
Adds a Content-Type request header.
voidaddParameter(String parameterName, String parameterValue)
Adds a text field part
voidaddParameter(String parameterName, File parameterFile)
Adds a binary file part
voidaddParameter(String parameterName, String fileName, File parameterFile)
Adds a binary file part with the given file name
voidaddPart(Part part)
Adds a part.
protected voidaddRequestHeaders(HttpState state, HttpConnection conn)
Populates the request headers map to with additional {@link org.apache.commons.httpclient.Header headers} to be submitted to the given {@link HttpConnection}.
StringgetName()
Returns "POST".
Part[]getParts()
Returns all parts.
protected longgetRequestContentLength()

Return the length of the request body.

Once this method has been invoked, the request parameters cannot be altered until the method is {@link #recycle recycled}.

protected booleanhasRequestContent()
Returns true
voidrecycle()
Recycles the HTTP method so that it can be used again.
protected booleanwriteRequestBody(HttpState state, HttpConnection conn)
Writes the request body to the given {@link HttpConnection connection}.

Field Detail

MULTIPART_FORM_CONTENT_TYPE

public static final String MULTIPART_FORM_CONTENT_TYPE
The Content-Type for multipart/form-data.

Constructor Detail

MultipartPostMethod

public MultipartPostMethod()
No-arg constructor.

MultipartPostMethod

public MultipartPostMethod(String uri)
Constructor specifying a URI.

Parameters: uri either an absolute or relative URI

Method Detail

addContentLengthRequestHeader

protected void addContentLengthRequestHeader(HttpState state, HttpConnection conn)
Adds a Content-Length request header, as long as no Content-Length request header already exists.

Parameters: state current state of http requests conn the connection to use for I/O

Throws: IOException if an I/O (transport) error occurs. Some transport exceptions can be recovered from. HttpException if a protocol exception occurs. Usually protocol exceptions cannot be recovered from.

Since: 3.0

addContentTypeRequestHeader

protected void addContentTypeRequestHeader(HttpState state, HttpConnection conn)
Adds a Content-Type request header.

Parameters: state current state of http requests conn the connection to use for I/O

Throws: IOException if an I/O (transport) error occurs. Some transport exceptions can be recovered from. HttpException if a protocol exception occurs. Usually protocol exceptions cannot be recovered from.

Since: 3.0

addParameter

public void addParameter(String parameterName, String parameterValue)
Adds a text field part

Parameters: parameterName The name of the parameter. parameterValue The value of the parameter.

addParameter

public void addParameter(String parameterName, File parameterFile)
Adds a binary file part

Parameters: parameterName The name of the parameter parameterFile The name of the file.

Throws: FileNotFoundException If the file cannot be found.

addParameter

public void addParameter(String parameterName, String fileName, File parameterFile)
Adds a binary file part with the given file name

Parameters: parameterName The name of the parameter fileName The file name parameterFile The file

Throws: FileNotFoundException If the file cannot be found.

addPart

public void addPart(Part part)
Adds a part.

Parameters: part The part to add.

addRequestHeaders

protected void addRequestHeaders(HttpState state, HttpConnection conn)
Populates the request headers map to with additional {@link org.apache.commons.httpclient.Header headers} to be submitted to the given {@link HttpConnection}.

This implementation adds tt>Content-Length and Content-Type headers, when appropriate.

Subclasses may want to override this method to to add additional headers, and may choose to invoke this implementation (via super) to add the "standard" headers.

Parameters: state the {@link HttpState state} information associated with this method conn the {@link HttpConnection connection} used to execute this HTTP method

Throws: IOException if an I/O (transport) error occurs. Some transport exceptions can be recovered from. HttpException if a protocol exception occurs. Usually protocol exceptions cannot be recovered from.

See Also: MultipartPostMethod

getName

public String getName()
Returns "POST".

Returns: "POST"

getParts

public Part[] getParts()
Returns all parts.

Returns: an array of containing all parts

getRequestContentLength

protected long getRequestContentLength()

Return the length of the request body.

Once this method has been invoked, the request parameters cannot be altered until the method is {@link #recycle recycled}.

Returns: The request content length.

hasRequestContent

protected boolean hasRequestContent()
Returns true

Returns: true

Since: 2.0beta1

recycle

public void recycle()

Deprecated: no longer supported and will be removed in the future version of HttpClient

Recycles the HTTP method so that it can be used again. Note that all of the instance variables will be reset once this method has been called. This method will also release the connection being used by this HTTP method.

See Also:

writeRequestBody

protected boolean writeRequestBody(HttpState state, HttpConnection conn)
Writes the request body to the given {@link HttpConnection connection}.

Parameters: state the {@link HttpState state} information associated with this method conn the {@link HttpConnection connection} used to execute this HTTP method

Returns: true

Throws: IOException if an I/O (transport) error occurs. Some transport exceptions can be recovered from. HttpException if a protocol exception occurs. Usually protocol exceptions cannot be recovered from.

Copyright (c) 1999-2005 - Apache Software Foundation