All Implemented Interfaces:
HttpMethod
Direct Known Subclasses:
PostMethod, PutMethod

public abstract class EntityEnclosingMethod extends ExpectContinueMethod
This abstract class serves as a foundation for all HTTP methods that can enclose an entity within requests
Since:
2.0beta1
Version:
$Revision: 480424 $
  • Field Details

  • Constructor Details

    • EntityEnclosingMethod

      public EntityEnclosingMethod()
      No-arg constructor.
      Since:
      2.0
    • EntityEnclosingMethod

      public EntityEnclosingMethod(String uri)
      Constructor specifying a URI.
      Parameters:
      uri - either an absolute or relative URI
      Since:
      2.0
  • Method Details

    • hasRequestContent

      protected boolean hasRequestContent()
      Returns true if there is a request body to be sent.

      This method must be overridden by sub-classes that implement alternative request content input methods

      Specified by:
      hasRequestContent in class ExpectContinueMethod
      Returns:
      boolean
      Since:
      2.0beta1
    • clearRequestBody

      protected void clearRequestBody()
      Clears the request body.

      This method must be overridden by sub-classes that implement alternative request content input methods.

      Since:
      2.0beta1
    • generateRequestBody

      protected byte[] generateRequestBody()
      Generates the request body.

      This method must be overridden by sub-classes that implement alternative request content input methods.

      Returns:
      request body as an array of bytes. If the request content has not been set, returns null.
      Since:
      2.0beta1
    • generateRequestEntity

      protected RequestEntity generateRequestEntity()
    • getFollowRedirects

      public boolean getFollowRedirects()
      Entity enclosing requests cannot be redirected without user intervention according to RFC 2616.
      Specified by:
      getFollowRedirects in interface HttpMethod
      Overrides:
      getFollowRedirects in class HttpMethodBase
      Returns:
      false.
      Since:
      2.0
    • setFollowRedirects

      public void setFollowRedirects(boolean followRedirects)
      Entity enclosing requests cannot be redirected without user intervention according to RFC 2616.
      Specified by:
      setFollowRedirects in interface HttpMethod
      Overrides:
      setFollowRedirects in class HttpMethodBase
      Parameters:
      followRedirects - must always be false
    • setRequestContentLength

      public void setRequestContentLength(int length)
      Sets length information about the request body.

      Note: If you specify a content length the request is unbuffered. This prevents redirection and automatic retry if a request fails the first time. This means that the HttpClient can not perform authorization automatically but will throw an Exception. You will have to set the necessary 'Authorization' or 'Proxy-Authorization' headers manually.

      Parameters:
      length - size in bytes or any of CONTENT_LENGTH_AUTO, CONTENT_LENGTH_CHUNKED. If number of bytes or CONTENT_LENGTH_CHUNKED is specified the content will not be buffered internally and the Content-Length header of the request will be used. In this case the user is responsible to supply the correct content length. If CONTENT_LENGTH_AUTO is specified the request will be buffered before it is sent over the network.
    • getRequestCharSet

      public String getRequestCharSet()
      Returns the request's charset. The charset is parsed from the request entity's content type, unless the content type header has been set manually.
      Overrides:
      getRequestCharSet in class HttpMethodBase
      Returns:
      String The character set.
      Since:
      3.0
      See Also:
    • setRequestContentLength

      public void setRequestContentLength(long length)
      Sets length information about the request body.

      Note: If you specify a content length the request is unbuffered. This prevents redirection and automatic retry if a request fails the first time. This means that the HttpClient can not perform authorization automatically but will throw an Exception. You will have to set the necessary 'Authorization' or 'Proxy-Authorization' headers manually.

      Parameters:
      length - size in bytes or any of CONTENT_LENGTH_AUTO, CONTENT_LENGTH_CHUNKED. If number of bytes or CONTENT_LENGTH_CHUNKED is specified the content will not be buffered internally and the Content-Length header of the request will be used. In this case the user is responsible to supply the correct content length. If CONTENT_LENGTH_AUTO is specified the request will be buffered before it is sent over the network.
    • setContentChunked

      public void setContentChunked(boolean chunked)
      Sets whether or not the content should be chunked.
      Parameters:
      chunked - true if the content should be chunked
      Since:
      3.0
    • getRequestContentLength

      protected long getRequestContentLength()
      Returns the length of the request body.
      Returns:
      number of bytes in the request body
    • addRequestHeaders

      protected void addRequestHeaders(HttpState state, HttpConnection conn) throws IOException, HttpException
      Populates the request headers map to with additional headers to be submitted to the given HttpConnection.

      This implementation adds tt>Content-Length or Transfer-Encoding headers.

      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.

      Overrides:
      addRequestHeaders in class ExpectContinueMethod
      Parameters:
      state - the state information associated with this method
      conn - the 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.
      Since:
      3.0
      See Also:
    • addContentLengthRequestHeader

      protected void addContentLengthRequestHeader(HttpState state, HttpConnection conn) throws IOException, HttpException
      Generates Content-Length or Transfer-Encoding: Chunked 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 - when errors occur reading or writing to/from the connection
      HttpException - when a recoverable error occurs
    • setRequestBody

      public void setRequestBody(InputStream body)
      Sets the request body to be the specified inputstream.
      Parameters:
      body - Request body content as InputStream
    • setRequestBody

      public void setRequestBody(String body)
      Sets the request body to be the specified string. The string will be submitted, using the encoding specified in the Content-Type request header.
      Example: setRequestHeader("Content-type", "text/xml; charset=UTF-8");
      Would use the UTF-8 encoding. If no charset is specified, the default content encoding is used (ISO-8859-1).
      Parameters:
      body - Request body content as a string
    • writeRequestBody

      protected boolean writeRequestBody(HttpState state, HttpConnection conn) throws IOException, HttpException
      Writes the request body to the given connection.
      Overrides:
      writeRequestBody in class HttpMethodBase
      Parameters:
      state - the state information associated with this method
      conn - the 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.
    • 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.
      Specified by:
      recycle in interface HttpMethod
      Overrides:
      recycle in class HttpMethodBase
      See Also:
    • getRequestEntity

      public RequestEntity getRequestEntity()
      Returns:
      Returns the requestEntity.
      Since:
      3.0
    • setRequestEntity

      public void setRequestEntity(RequestEntity requestEntity)
      Parameters:
      requestEntity - The requestEntity to set.
      Since:
      3.0