org.apache.commons.httpclient.methods
Class ExpectContinueMethod

java.lang.Object
  |
  +--org.apache.commons.httpclient.HttpMethodBase
        |
        +--org.apache.commons.httpclient.methods.GetMethod
              |
              +--org.apache.commons.httpclient.methods.ExpectContinueMethod
Direct Known Subclasses:
EntityEnclosingMethod, MultipartPostMethod

public abstract class ExpectContinueMethod
extends GetMethod

This abstract class serves as a foundation for all HTTP methods that support 'Expect: 100-continue' handshake.

The purpose of the 100 (Continue) status (refer to section 10.1.1 of the RFC 2616 for more details) is to allow a client that is sending a request message with a request body to determine if the origin server is willing to accept the request (based on the request headers) before the client sends the request body. In some cases, it might either be inappropriate or highly inefficient for the client to send the body if the server will reject the message without looking at the body.

'Expect: 100-continue' handshake should be used with caution, as it may cause problems with HTTP servers and proxies that do not support HTTP/1.1 protocol.

Since:
2.0beta1
Author:
Oleg Kalnichevski

Fields inherited from class org.apache.commons.httpclient.HttpMethodBase
USER_AGENT
 
Constructor Summary
ExpectContinueMethod()
          No-arg constructor.
ExpectContinueMethod(java.lang.String uri)
          Constructor specifying a URI.
ExpectContinueMethod(java.lang.String uri, java.lang.String tempDir)
          Deprecated. the client is responsible for disk I/O
ExpectContinueMethod(java.lang.String uri, java.lang.String tempDir, java.lang.String tempFile)
          Deprecated. the client is responsible for disk I/O
 
Method Summary
protected  void addRequestHeaders(HttpState state, HttpConnection conn)
          Sets the Expect header if it has not already been set, in addition to the "standard" set of headers.
 boolean getUseExpectHeader()
           Returns true if the 'Expect: 100-Continue' handshake is activated.
protected abstract  boolean hasRequestContent()
          Returns true if there is a request body to be sent.
 void setUseExpectHeader(boolean value)
           Activates 'Expect: 100-Continue' handshake.
 
Methods inherited from class org.apache.commons.httpclient.methods.GetMethod
getFileData, getName, getTempDir, getTempFile, getUseDisk, readResponseBody, recycle, setFileData, setTempDir, setTempFile, setUseDisk
 
Methods inherited from class org.apache.commons.httpclient.HttpMethodBase
addAuthorizationRequestHeader, addContentLengthRequestHeader, addCookieRequestHeader, addHostRequestHeader, addProxyAuthorizationRequestHeader, addProxyConnectionHeader, addRequestHeader, addRequestHeader, addResponseFooter, addUserAgentRequestHeader, checkNotUsed, checkUsed, execute, fakeResponse, generateRequestLine, getAuthenticationRealm, getContentCharSet, getDoAuthentication, getFollowRedirects, getHostConfiguration, getMethodRetryHandler, getPath, getProxyAuthenticationRealm, getQueryString, getRecoverableExceptionCount, getRequestCharSet, getRequestContentLength, getRequestHeader, getRequestHeaderGroup, getRequestHeaders, getResponseBody, getResponseBodyAsStream, getResponseBodyAsString, getResponseCharSet, getResponseContentLength, getResponseFooter, getResponseFooters, getResponseHeader, getResponseHeaderGroup, getResponseHeaders, getResponseStream, getResponseTrailerHeaderGroup, getStatusCode, getStatusLine, getStatusText, getURI, hasBeenUsed, isConnectionCloseForced, isHttp11, isStrictMode, processResponseBody, processResponseHeaders, processStatusLine, readResponse, readResponseHeaders, readStatusLine, releaseConnection, removeRequestHeader, responseBodyConsumed, setConnectionCloseForced, setDoAuthentication, setFollowRedirects, setHostConfiguration, setHttp11, setMethodRetryHandler, setPath, setQueryString, setQueryString, setRequestHeader, setRequestHeader, setResponseStream, setStrictMode, shouldCloseConnection, validate, writeRequest, writeRequestBody, writeRequestHeaders, writeRequestLine
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExpectContinueMethod

public ExpectContinueMethod()
No-arg constructor.
Since:
2.0

ExpectContinueMethod

public ExpectContinueMethod(java.lang.String uri)
Constructor specifying a URI.
Parameters:
uri - either an absolute or relative URI
Since:
2.0

ExpectContinueMethod

public ExpectContinueMethod(java.lang.String uri,
                            java.lang.String tempDir)
Deprecated. the client is responsible for disk I/O

Constructor specifying a URI and a tempDir.
Parameters:
uri - either an absolute or relative URI
tempDir - directory to store temp files in
Since:
2.0

ExpectContinueMethod

public ExpectContinueMethod(java.lang.String uri,
                            java.lang.String tempDir,
                            java.lang.String tempFile)
Deprecated. the client is responsible for disk I/O

Constructor specifying a URI, tempDir and tempFile.
Parameters:
uri - either an absolute or relative URI
tempDir - directory to store temp files in
tempFile - file to store temporary data in
Since:
2.0
Method Detail

getUseExpectHeader

public boolean getUseExpectHeader()

Returns true if the 'Expect: 100-Continue' handshake is activated. The purpose of the 'Expect: 100-Continue' handshake to allow a client that is sending a request message with a request body to determine if the origin server is willing to accept the request (based on the request headers) before the client sends the request body.

Returns:
true if 'Expect: 100-Continue' handshake is to be used, false otherwise.
Since:
2.0beta1

setUseExpectHeader

public void setUseExpectHeader(boolean value)

Activates 'Expect: 100-Continue' handshake. The purpose of the 'Expect: 100-Continue' handshake to allow a client that is sending a request message with a request body to determine if the origin server is willing to accept the request (based on the request headers) before the client sends the request body.

The use of the 'Expect: 100-continue' handshake can result in noticable peformance improvement for entity enclosing requests (such as POST and PUT) that require the target server's authentication.

'Expect: 100-continue' handshake should be used with caution, as it may cause problems with HTTP servers and proxies that do not support HTTP/1.1 protocol.

Parameters:
value - boolean value
Since:
2.0beta1

hasRequestContent

protected abstract boolean hasRequestContent()
Returns true if there is a request body to be sent. 'Expect: 100-continue' handshake may not be used if request body is not present
Returns:
boolean
Since:
2.0beta1

addRequestHeaders

protected void addRequestHeaders(HttpState state,
                                 HttpConnection conn)
                          throws java.io.IOException,
                                 HttpException
Sets the Expect header if it has not already been set, in addition to the "standard" set of headers.
Overrides:
addRequestHeaders in class HttpMethodBase
Parameters:
state - the state information associated with this method
conn - the connection used to execute this HTTP method
Throws:
java.io.IOException - if an I/O (transport) error occurs
HttpException - if a protocol exception occurs.
HttpRecoverableException - if a recoverable transport error occurs. Usually this kind of exceptions can be recovered from by retrying the HTTP method


Copyright © 2001-2004 Apache Software Foundation. All Rights Reserved.