Class HttpMethodBase
- All Implemented Interfaces:
HttpMethod
- Direct Known Subclasses:
ConnectMethod
,DeleteMethod
,ExpectContinueMethod
,GetMethod
,HeadMethod
,OptionsMethod
,TraceMethod
At minimum, subclasses will need to override:
getName()
to return the approriate name for this method
When a method requires additional request headers, subclasses will typically want to override:
addRequestHeaders(HttpState,HttpConnection)
to write those headers
When a method expects specific response headers, subclasses may want to override:
processResponseHeaders(HttpState,HttpConnection)
to handle those headers
- Version:
- $Revision: 539441 $ $Date: 2007-05-18 14:56:55 +0200 (Fri, 18 May 2007) $
-
Field Summary
Modifier and TypeFieldDescriptionprotected HttpVersion
HTTP protocol version used for execution of this method.protected StatusLine
The Status-Line from the response. -
Constructor Summary
ConstructorDescriptionNo-arg constructor.HttpMethodBase
(String uri) Constructor specifying a URI. -
Method Summary
Modifier and TypeMethodDescriptionvoid
abort()
Aborts the execution of this method.protected void
addCookieRequestHeader
(HttpState state, HttpConnection conn) Generates Cookie request headers for thosecookie
s that match the given host, port and path.protected void
addHostRequestHeader
(HttpState state, HttpConnection conn) Generates Host request header, as long as no Host request header already exists.protected void
addProxyConnectionHeader
(HttpState state, HttpConnection conn) Generates Proxy-Connection: Keep-Alive request header when communicating via a proxy server.void
addRequestHeader
(Header header) Adds the specified request header, NOT overwriting any previous value.void
addRequestHeader
(String headerName, String headerValue) Adds the specified request header, NOT overwriting any previous value.protected void
addRequestHeaders
(HttpState state, HttpConnection conn) Generates all the required requestheader
s to be submitted via the givenconnection
.void
addResponseFooter
(Header footer) Use this method internally to add footers.protected void
addUserAgentRequestHeader
(HttpState state, HttpConnection conn) Generates default User-Agent request header, as long as no User-Agent request header already exists.protected void
protected void
int
execute
(HttpState state, HttpConnection conn) Executes this method using the specifiedHttpConnection
andHttpState
.protected static String
generateRequestLine
(HttpConnection connection, String name, String requestPath, String query, String version) Generates HTTP request line according to the specified attributes.Deprecated.use #getHostAuthState()protected String
getContentCharSet
(Header contentheader) Returns the character set from the Content-Type header.boolean
Returns true if the HTTP method should automatically handle HTTP authentication challenges (status code 401, etc.), false otherwiseReturns the HTTP version used with this method (may be null if undefined, that is, the method has not been executed)boolean
Returns true if the HTTP method should automatically follow HTTP redirects (status code 302, etc.), false otherwise.Returns the target hostauthentication state
Deprecated.no longer applicableDeprecated.useHttpMethodParams
abstract String
getName()
Obtains the name of the HTTP method as used in the HTTP request line, for example "GET" or "POST".ReturnsHTTP protocol parameters
associated with this method.getPath()
Gets the path of this HTTP method.Deprecated.use #getProxyAuthState()Returns the proxyauthentication state
Gets the query string of this HTTP method.int
Deprecated.no longer used Returns the number of "recoverable" exceptions thrown and handled, to allow for monitoring the quality of the connection.Returns the character encoding of the request from the Content-Type header.getRequestHeader
(String headerName) Returns the specified request header.protected HeaderGroup
Gets theheader group
storing the request headers.Header[]
Returns an array of the requests headers that the HTTP method currently hasHeader[]
getRequestHeaders
(String headerName) Returns the request headers with the given name.byte[]
Returns the response body of the HTTP method, if any, as an array of bytes.byte[]
getResponseBody
(int maxlen) Returns the response body of the HTTP method, if any, as an array of bytes.Returns the response body of the HTTP method, if any, as anInputStream
.Returns the response body of the HTTP method, if any, as aString
.getResponseBodyAsString
(int maxlen) Returns the response body of the HTTP method, if any, as aString
.Returns the character encoding of the response from the Content-Type header.long
Return the length (in bytes) of the response body, as specified in a Content-Length header.getResponseFooter
(String footerName) Gets the response footer associated with the given name.Header[]
Returns an array of the response footers that the HTTP method currently has in the order in which they were read.getResponseHeader
(String headerName) Gets the response header associated with the given name.protected HeaderGroup
Gets theheader group
storing the response headers.Header[]
Returns an array of the response headers that the HTTP method currently has in the order in which they were read.Header[]
getResponseHeaders
(String headerName) Returns the response headers with the given name.protected InputStream
Returns a stream from which the body of the current response may be read.protected HeaderGroup
Gets theheader group
storing the response trailer headers as per RFC 2616 section 3.6.1.int
Returns the response status code.Provides access to the response status line.Returns the status text (or "reason phrase") associated with the latest response.getURI()
Returns the URI of the HTTP methodboolean
boolean
Tests whether the execution of this method has been abortedprotected boolean
Tests if the connection should be force-closed when no longer needed.boolean
isHttp11()
Deprecated.boolean
Returns true if the HTTP has been transmitted to the target server in its entirety, false otherwise.boolean
Deprecated.UseHttpParams.setParameter(String, Object)
to exercise a more granular control over HTTP protocol strictness.protected void
processCookieHeaders
(CookieSpec parser, Header[] headers, HttpState state, HttpConnection conn) This method processes the specified cookie headers.protected void
processResponseBody
(HttpState state, HttpConnection conn) This method is invoked immediately afterreadResponseBody(HttpState,HttpConnection)
and can be overridden by sub-classes in order to provide custom body processing.protected void
processResponseHeaders
(HttpState state, HttpConnection conn) This method is invoked immediately afterreadResponseHeaders(HttpState,HttpConnection)
and can be overridden by sub-classes in order to provide custom response headers processing.protected void
processStatusLine
(HttpState state, HttpConnection conn) This method is invoked immediately afterreadStatusLine(HttpState,HttpConnection)
and can be overridden by sub-classes in order to provide custom response status line processing.protected void
readResponse
(HttpState state, HttpConnection conn) Reads the response from the givenconnection
.protected void
readResponseBody
(HttpState state, HttpConnection conn) Read the response body from the givenHttpConnection
.protected void
readResponseHeaders
(HttpState state, HttpConnection conn) Reads the response headers from the givenconnection
.protected void
readStatusLine
(HttpState state, HttpConnection conn) void
recycle()
Deprecated.no longer supported and will be removed in the future version of HttpClientvoid
Releases the connection being used by this HTTP method.void
removeRequestHeader
(Header header) Removes the given request header.void
removeRequestHeader
(String headerName) Remove the request header associated with the given name.protected void
A response has been consumed.protected void
setConnectionCloseForced
(boolean b) Sets whether or not the connection should be force-closed when no longer needed.void
setDoAuthentication
(boolean doAuthentication) Sets whether or not the HTTP method should automatically handle HTTP authentication challenges (status code 401, etc.)void
setFollowRedirects
(boolean followRedirects) Sets whether or not the HTTP method should automatically follow HTTP redirects (status code 302, etc.)void
setHostConfiguration
(HostConfiguration hostconfig) Deprecated.no longer applicablevoid
setHttp11
(boolean http11) Deprecated.void
setMethodRetryHandler
(MethodRetryHandler handler) Deprecated.useHttpMethodParams
void
setParams
(HttpMethodParams params) AssignsHTTP protocol parameters
for this method.void
Sets the path of the HTTP method.void
setQueryString
(NameValuePair[] params) Sets the query string of this HTTP method.void
setQueryString
(String queryString) Sets the query string of this HTTP method.void
setRequestHeader
(Header header) Sets the specified request header, overwriting any previous value.void
setRequestHeader
(String headerName, String headerValue) Set the specified request header, overwriting any previous value.protected void
setResponseStream
(InputStream responseStream) Sets the response stream.void
setStrictMode
(boolean strictMode) Deprecated.UseHttpParams.setParameter(String, Object)
to exercise a more granular control over HTTP protocol strictness.void
Sets the URI for this method.protected boolean
Tests if the connection should be closed after the method has been executed.boolean
validate()
Returns true the method is ready to execute, false otherwise.protected void
writeRequest
(HttpState state, HttpConnection conn) Sends the request via the givenconnection
.protected boolean
writeRequestBody
(HttpState state, HttpConnection conn) Writes the request body to the givenconnection
.protected void
writeRequestHeaders
(HttpState state, HttpConnection conn) Writes the request headers to the givenconnection
.protected void
writeRequestLine
(HttpState state, HttpConnection conn) Writes the request line to the givenconnection
.
-
Field Details
-
statusLine
The Status-Line from the response. -
effectiveVersion
HTTP protocol version used for execution of this method.
-
-
Constructor Details
-
HttpMethodBase
public HttpMethodBase()No-arg constructor. -
HttpMethodBase
Constructor specifying a URI. It is responsibility of the caller to ensure that URI elements (path & query parameters) are properly encoded (URL safe).- Parameters:
uri
- either an absolute or relative URI. The URI is expected to be URL-encoded- Throws:
IllegalArgumentException
- when URI is invalidIllegalStateException
- when protocol of the absolute URI is not recognised
-
-
Method Details
-
getName
Obtains the name of the HTTP method as used in the HTTP request line, for example "GET" or "POST".- Specified by:
getName
in interfaceHttpMethod
- Returns:
- the name of this method
-
getURI
Returns the URI of the HTTP method- Specified by:
getURI
in interfaceHttpMethod
- Returns:
- The URI
- Throws:
URIException
- If the URI cannot be created.- See Also:
-
setURI
Sets the URI for this method.- Specified by:
setURI
in interfaceHttpMethod
- Parameters:
uri
- URI to be set- Throws:
URIException
- if a URI cannot be set- Since:
- 3.0
-
setFollowRedirects
public void setFollowRedirects(boolean followRedirects) Sets whether or not the HTTP method should automatically follow HTTP redirects (status code 302, etc.)- Specified by:
setFollowRedirects
in interfaceHttpMethod
- Parameters:
followRedirects
- true if the method will automatically follow redirects, false otherwise.
-
getFollowRedirects
public boolean getFollowRedirects()Returns true if the HTTP method should automatically follow HTTP redirects (status code 302, etc.), false otherwise.- Specified by:
getFollowRedirects
in interfaceHttpMethod
- Returns:
- true if the method will automatically follow HTTP redirects, false otherwise.
-
setHttp11
public void setHttp11(boolean http11) Deprecated.Sets whether version 1.1 of the HTTP protocol should be used per default.- Parameters:
http11
- true to use HTTP/1.1, false to use 1.0
-
getDoAuthentication
public boolean getDoAuthentication()Returns true if the HTTP method should automatically handle HTTP authentication challenges (status code 401, etc.), false otherwise- Specified by:
getDoAuthentication
in interfaceHttpMethod
- Returns:
- true if authentication challenges will be processed automatically, false otherwise.
- Since:
- 2.0
- See Also:
-
setDoAuthentication
public void setDoAuthentication(boolean doAuthentication) Sets whether or not the HTTP method should automatically handle HTTP authentication challenges (status code 401, etc.)- Specified by:
setDoAuthentication
in interfaceHttpMethod
- Parameters:
doAuthentication
- true to process authentication challenges authomatically, false otherwise.- Since:
- 2.0
- See Also:
-
isHttp11
public boolean isHttp11()Deprecated.Returns true if version 1.1 of the HTTP protocol should be used per default, false if version 1.0 should be used.- Returns:
- true to use HTTP/1.1, false to use 1.0
-
setPath
Sets the path of the HTTP method. It is responsibility of the caller to ensure that the path is properly encoded (URL safe).- Specified by:
setPath
in interfaceHttpMethod
- Parameters:
path
- the path of the HTTP method. The path is expected to be URL-encoded
-
addRequestHeader
Adds the specified request header, NOT overwriting any previous value. Note that header-name matching is case insensitive.- Specified by:
addRequestHeader
in interfaceHttpMethod
- Parameters:
header
- the header to add to the request- See Also:
-
getPath
Gets the path of this HTTP method. Calling this method after the request has been executed will return the actual path, following any redirects automatically handled by this HTTP method.- Specified by:
getPath
in interfaceHttpMethod
- Returns:
- the path to request or "/" if the path is blank.
-
setQueryString
Sets the query string of this HTTP method. The caller must ensure that the string is properly URL encoded. The query string should not start with the question mark character.- Specified by:
setQueryString
in interfaceHttpMethod
- Parameters:
queryString
- the query string- See Also:
-
setQueryString
Sets the query string of this HTTP method. The pairs are encoded as UTF-8 characters. To use a different charset the parameters can be encoded manually using EncodingUtil and set as a single String.- Specified by:
setQueryString
in interfaceHttpMethod
- Parameters:
params
- an array ofNameValuePair
s to add as query string parameters. The name/value pairs will be automcatically URL encoded- See Also:
-
getQueryString
Gets the query string of this HTTP method.- Specified by:
getQueryString
in interfaceHttpMethod
- Returns:
- The query string
- See Also:
-
setRequestHeader
Set the specified request header, overwriting any previous value. Note that header-name matching is case-insensitive.- Specified by:
setRequestHeader
in interfaceHttpMethod
- Parameters:
headerName
- the header's nameheaderValue
- the header's value- See Also:
-
setRequestHeader
Sets the specified request header, overwriting any previous value. Note that header-name matching is case insensitive.- Specified by:
setRequestHeader
in interfaceHttpMethod
- Parameters:
header
- the header- See Also:
-
getRequestHeader
Returns the specified request header. Note that header-name matching is case insensitive. null will be returned if either headerName is null or there is no matching header for headerName.- Specified by:
getRequestHeader
in interfaceHttpMethod
- Parameters:
headerName
- The name of the header to be returned.- Returns:
- The specified request header.
- Since:
- 3.0
-
getRequestHeaders
Returns an array of the requests headers that the HTTP method currently has- Specified by:
getRequestHeaders
in interfaceHttpMethod
- Returns:
- an array of my request headers.
- See Also:
-
getRequestHeaders
Description copied from interface:HttpMethod
Returns the request headers with the given name. Note that header-name matching is case insensitive.- Specified by:
getRequestHeaders
in interfaceHttpMethod
- Parameters:
headerName
- the name of the headers to be returned.- Returns:
- an array of zero or more headers
- See Also:
-
getRequestHeaderGroup
Gets theheader group
storing the request headers.- Returns:
- a HeaderGroup
- Since:
- 2.0beta1
-
getResponseTrailerHeaderGroup
Gets theheader group
storing the response trailer headers as per RFC 2616 section 3.6.1.- Returns:
- a HeaderGroup
- Since:
- 2.0beta1
-
getResponseHeaderGroup
Gets theheader group
storing the response headers.- Returns:
- a HeaderGroup
- Since:
- 2.0beta1
-
getResponseHeaders
Description copied from interface:HttpMethod
Returns the response headers with the given name. Note that header-name matching is case insensitive.- Specified by:
getResponseHeaders
in interfaceHttpMethod
- Parameters:
headerName
- the name of the headers to be returned.- Returns:
- an array of zero or more headers
- Since:
- 3.0
- See Also:
-
getStatusCode
public int getStatusCode()Returns the response status code.- Specified by:
getStatusCode
in interfaceHttpMethod
- Returns:
- the status code associated with the latest response.
-
getStatusLine
Provides access to the response status line.- Specified by:
getStatusLine
in interfaceHttpMethod
- Returns:
- the status line object from the latest response.
- Since:
- 2.0
-
getResponseHeaders
Returns an array of the response headers that the HTTP method currently has in the order in which they were read.- Specified by:
getResponseHeaders
in interfaceHttpMethod
- Returns:
- an array of response headers.
-
getResponseHeader
Gets the response header associated with the given name. Header name matching is case insensitive. null will be returned if either headerName is null or there is no matching header for headerName.- Specified by:
getResponseHeader
in interfaceHttpMethod
- Parameters:
headerName
- the header name to match- Returns:
- the matching header
-
getResponseContentLength
public long getResponseContentLength()Return the length (in bytes) of the response body, as specified in a Content-Length header.Return -1 when the content-length is unknown.
- Returns:
- content length, if Content-Length header is available. 0 indicates that the request has no body. If Content-Length header is not present, the method returns -1.
-
getResponseBody
Returns the response body of the HTTP method, if any, as an array of bytes. If response body is not available or cannot be read, returns null. Buffers the response and this method can be called several times yielding the same result each time. Note: This will cause the entire response body to be buffered in memory. A malicious server may easily exhaust all the VM memory. It is strongly recommended, to use getResponseAsStream if the content length of the response is unknown or resonably large.- Specified by:
getResponseBody
in interfaceHttpMethod
- Returns:
- The response body.
- Throws:
IOException
- If an I/O (transport) problem occurs while obtaining the response body.
-
getResponseBody
Returns the response body of the HTTP method, if any, as an array of bytes. If response body is not available or cannot be read, returns null. Buffers the response and this method can be called several times yielding the same result each time. Note: This will cause the entire response body to be buffered in memory. This method is safe if the content length of the response is unknown, because the amount of memory used is limited.If the response is large this method involves lots of array copying and many object allocations, which makes it unsuitable for high-performance / low-footprint applications. Those applications should use
getResponseBodyAsStream()
.- Parameters:
maxlen
- the maximum content length to accept (number of bytes).- Returns:
- The response body.
- Throws:
IOException
- If an I/O (transport) problem occurs while obtaining the response body.
-
getResponseBodyAsStream
Returns the response body of the HTTP method, if any, as anInputStream
. If response body is not available, returns null. If the response has been buffered this method returns a new stream object on every call. If the response has not been buffered the returned stream can only be read once.- Specified by:
getResponseBodyAsStream
in interfaceHttpMethod
- Returns:
- The response body or
null
. - Throws:
IOException
- If an I/O (transport) problem occurs while obtaining the response body.
-
getResponseBodyAsString
Returns the response body of the HTTP method, if any, as aString
. If response body is not available or cannot be read, returns null The string conversion on the data is done using the character encoding specified in Content-Type header. Buffers the response and this method can be called several times yielding the same result each time. Note: This will cause the entire response body to be buffered in memory. A malicious server may easily exhaust all the VM memory. It is strongly recommended, to use getResponseAsStream if the content length of the response is unknown or resonably large.- Specified by:
getResponseBodyAsString
in interfaceHttpMethod
- Returns:
- The response body or
null
. - Throws:
IOException
- If an I/O (transport) problem occurs while obtaining the response body.
-
getResponseBodyAsString
Returns the response body of the HTTP method, if any, as aString
. If response body is not available or cannot be read, returns null The string conversion on the data is done using the character encoding specified in Content-Type header. Buffers the response and this method can be called several times yielding the same result each time. Note: This will cause the entire response body to be buffered in memory. This method is safe if the content length of the response is unknown, because the amount of memory used is limited.If the response is large this method involves lots of array copying and many object allocations, which makes it unsuitable for high-performance / low-footprint applications. Those applications should use
getResponseBodyAsStream()
.- Parameters:
maxlen
- the maximum content length to accept (number of bytes). Note that, depending on the encoding, this is not equal to the number of characters.- Returns:
- The response body or
null
. - Throws:
IOException
- If an I/O (transport) problem occurs while obtaining the response body.
-
setResponseStream
Sets the response stream.- Parameters:
responseStream
- The new response stream.
-
getResponseStream
Returns a stream from which the body of the current response may be read. If the method has not yet been executed, ifresponseBodyConsumed
has been called, or if the stream returned by a previous call has been closed,null
will be returned.- Returns:
- the current response stream
-
getStatusText
Returns the status text (or "reason phrase") associated with the latest response.- Specified by:
getStatusText
in interfaceHttpMethod
- Returns:
- The status text.
-
setStrictMode
public void setStrictMode(boolean strictMode) Deprecated.UseHttpParams.setParameter(String, Object)
to exercise a more granular control over HTTP protocol strictness.Defines how strictly HttpClient follows the HTTP protocol specification (RFC 2616 and other relevant RFCs). In the strict mode HttpClient precisely implements the requirements of the specification, whereas in non-strict mode it attempts to mimic the exact behaviour of commonly used HTTP agents, which many HTTP servers expect.- Specified by:
setStrictMode
in interfaceHttpMethod
- Parameters:
strictMode
- true for strict mode, false otherwise- See Also:
-
isStrictMode
public boolean isStrictMode()Deprecated.UseHttpParams.setParameter(String, Object)
to exercise a more granular control over HTTP protocol strictness.Description copied from interface:HttpMethod
Returns the value of the strict mode flag.- Specified by:
isStrictMode
in interfaceHttpMethod
- Returns:
- false
- See Also:
-
addRequestHeader
Adds the specified request header, NOT overwriting any previous value. Note that header-name matching is case insensitive.- Specified by:
addRequestHeader
in interfaceHttpMethod
- Parameters:
headerName
- the header's nameheaderValue
- the header's value- See Also:
-
isConnectionCloseForced
protected boolean isConnectionCloseForced()Tests if the connection should be force-closed when no longer needed.- Returns:
true
if the connection must be closed
-
setConnectionCloseForced
protected void setConnectionCloseForced(boolean b) Sets whether or not the connection should be force-closed when no longer needed. This value should only be set totrue
in abnormal circumstances, such as HTTP protocol violations.- Parameters:
b
-true
if the connection must be closed,false
otherwise.
-
shouldCloseConnection
Tests if the connection should be closed after the method has been executed. The connection will be left open when using HTTP/1.1 or if Connection: keep-alive header was sent.- Parameters:
conn
- the connection in question- Returns:
- boolean true if we should close the connection.
-
execute
Executes this method using the specifiedHttpConnection
andHttpState
.- Specified by:
execute
in interfaceHttpMethod
- Parameters:
state
-state
information to associate with this request. Must be non-null.conn
- theconnection
to used to execute this HTTP method. Must be non-null.- Returns:
- the integer status code if one was obtained, or -1
- Throws:
IOException
- if an I/O (transport) error occursHttpException
- if a protocol exception occurs.
-
abort
public void abort()Aborts the execution of this method.- Specified by:
abort
in interfaceHttpMethod
- Since:
- 3.0
- See Also:
-
hasBeenUsed
public boolean hasBeenUsed()- Specified by:
hasBeenUsed
in interfaceHttpMethod
- Returns:
- true if the method has been executed, false otherwise
-
recycle
public void recycle()Deprecated.no longer supported and will be removed in the future version of HttpClientRecycles 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 interfaceHttpMethod
- See Also:
-
releaseConnection
public void releaseConnection()Releases the connection being used by this HTTP method. In particular the connection is used to read the response(if there is one) and will be held until the response has been read. If the connection can be reused by other HTTP methods it is NOT closed at this point.- Specified by:
releaseConnection
in interfaceHttpMethod
- Since:
- 2.0
-
removeRequestHeader
Remove the request header associated with the given name. Note that header-name matching is case insensitive.- Specified by:
removeRequestHeader
in interfaceHttpMethod
- Parameters:
headerName
- the header name
-
removeRequestHeader
Removes the given request header.- Specified by:
removeRequestHeader
in interfaceHttpMethod
- Parameters:
header
- the header
-
validate
public boolean validate()Returns true the method is ready to execute, false otherwise.- Specified by:
validate
in interfaceHttpMethod
- Returns:
- This implementation always returns true.
-
addCookieRequestHeader
protected void addCookieRequestHeader(HttpState state, HttpConnection conn) throws IOException, HttpException Generates Cookie request headers for thosecookie
s that match the given host, port and path.- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
addHostRequestHeader
protected void addHostRequestHeader(HttpState state, HttpConnection conn) throws IOException, HttpException Generates Host request header, as long as no Host request header already exists.- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
addProxyConnectionHeader
protected void addProxyConnectionHeader(HttpState state, HttpConnection conn) throws IOException, HttpException Generates Proxy-Connection: Keep-Alive request header when communicating via a proxy server.- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
addRequestHeaders
protected void addRequestHeaders(HttpState state, HttpConnection conn) throws IOException, HttpException Generates all the required requestheader
s to be submitted via the givenconnection
.This implementation adds User-Agent, Host, Cookie, Authorization, Proxy-Authorization and Proxy-Connection 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
- thestate
information associated with this methodconn
- theconnection
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:
-
addUserAgentRequestHeader
protected void addUserAgentRequestHeader(HttpState state, HttpConnection conn) throws IOException, HttpException Generates default User-Agent request header, as long as no User-Agent request header already exists.- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
checkNotUsed
- Throws:
IllegalStateException
- if the method has been used and not recycled
-
checkUsed
- Throws:
IllegalStateException
- if not used
-
generateRequestLine
protected static String generateRequestLine(HttpConnection connection, String name, String requestPath, String query, String version) Generates HTTP request line according to the specified attributes.- Parameters:
connection
- theconnection
used to execute this HTTP methodname
- the method name generate a request forrequestPath
- the path string for the requestquery
- the query string for the requestversion
- the protocol version to use (e.g. HTTP/1.0)- Returns:
- HTTP request line
-
processResponseBody
This method is invoked immediately afterreadResponseBody(HttpState,HttpConnection)
and can be overridden by sub-classes in order to provide custom body processing.This implementation does nothing.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
used to execute this HTTP method- See Also:
-
readResponse(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
readResponseBody(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
-
processResponseHeaders
This method is invoked immediately afterreadResponseHeaders(HttpState,HttpConnection)
and can be overridden by sub-classes in order to provide custom response headers processing.This implementation will handle the Set-Cookie and Set-Cookie2 headers, if any, adding the relevant cookies to the given
HttpState
.- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
used to execute this HTTP method- See Also:
-
readResponse(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
readResponseHeaders(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
-
processCookieHeaders
protected void processCookieHeaders(CookieSpec parser, Header[] headers, HttpState state, HttpConnection conn) This method processes the specified cookie headers. It is invoked from withinprocessResponseHeaders(HttpState,HttpConnection)
- Parameters:
headers
- cookieHeader
s to be processedstate
- thestate
information associated with this HTTP methodconn
- theconnection
used to execute this HTTP method
-
processStatusLine
This method is invoked immediately afterreadStatusLine(HttpState,HttpConnection)
and can be overridden by sub-classes in order to provide custom response status line processing.- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
used to execute this HTTP method- See Also:
-
readResponse(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
readStatusLine(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
-
readResponse
Reads the response from the givenconnection
.The response is processed as the following sequence of actions:
-
readStatusLine(HttpState,HttpConnection)
is invoked to read the request line. -
processStatusLine(HttpState,HttpConnection)
is invoked, allowing the method to process the status line if desired. -
readResponseHeaders(HttpState,HttpConnection)
is invoked to read the associated headers. -
processResponseHeaders(HttpState,HttpConnection)
is invoked, allowing the method to process the headers if desired. -
readResponseBody(HttpState,HttpConnection)
is invoked to read the associated body (if any). -
processResponseBody(HttpState,HttpConnection)
is invoked, allowing the method to process the response body if desired.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
-
readResponseBody
protected void readResponseBody(HttpState state, HttpConnection conn) throws IOException, HttpException Read the response body from the givenHttpConnection
.The current implementation wraps the socket level stream with an appropriate stream for the type of response (chunked, content-length, or auto-close). If there is no response body, the connection associated with the request will be returned to the connection manager.
Subclasses may want to override this method to to customize the processing.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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:
-
readResponse(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
processResponseBody(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
-
readResponseHeaders
protected void readResponseHeaders(HttpState state, HttpConnection conn) throws IOException, HttpException Reads the response headers from the givenconnection
.Subclasses may want to override this method to to customize the processing.
"It must be possible to combine the multiple header fields into one "field-name: field-value" pair, without changing the semantics of the message, by appending each subsequent field-value to the first, each separated by a comma." - HTTP/1.0 (4.3)
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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:
-
readResponse(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
processResponseHeaders(edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpState, edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.HttpConnection)
-
readStatusLine
protected void readStatusLine(HttpState state, HttpConnection conn) throws IOException, HttpException Read the status line from the givenHttpConnection
, setting mystatus code
andstatus text
.Subclasses may want to override this method to to customize the processing.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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:
-
writeRequest
Sends the request via the given
connection
.The request is written as the following sequence of actions:
-
writeRequestLine(HttpState, HttpConnection)
is invoked to write the request line. -
writeRequestHeaders(HttpState, HttpConnection)
is invoked to write the associated headers. - \r\n is sent to close the head part of the request.
-
writeRequestBody(HttpState, HttpConnection)
is invoked to write the body part of the request.
Subclasses may want to override one or more of the above methods to to customize the processing. (Or they may choose to override this method if dramatically different processing is required.)
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
-
writeRequestBody
protected boolean writeRequestBody(HttpState state, HttpConnection conn) throws IOException, HttpException Writes the request body to the givenconnection
.This method should return true if the request body was actually sent (or is empty), or false if it could not be sent for some reason.
This implementation writes nothing and returns true.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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.
-
writeRequestHeaders
protected void writeRequestHeaders(HttpState state, HttpConnection conn) throws IOException, HttpException Writes the request headers to the givenconnection
.This implementation invokes
addRequestHeaders(HttpState,HttpConnection)
, and then writes each header to the request stream.Subclasses may want to override this method to to customize the processing.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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:
-
writeRequestLine
protected void writeRequestLine(HttpState state, HttpConnection conn) throws IOException, HttpException Writes the request line to the givenconnection
.Subclasses may want to override this method to to customize the processing.
- Parameters:
state
- thestate
information associated with this methodconn
- theconnection
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:
-
getParams
ReturnsHTTP protocol parameters
associated with this method.- Specified by:
getParams
in interfaceHttpMethod
- Returns:
- HTTP parameters.
- Since:
- 3.0
- See Also:
-
setParams
AssignsHTTP protocol parameters
for this method.- Specified by:
setParams
in interfaceHttpMethod
- Since:
- 3.0
- See Also:
-
getEffectiveVersion
Returns the HTTP version used with this method (may be null if undefined, that is, the method has not been executed)- Returns:
- HTTP version.
- Since:
- 3.0
-
getProxyAuthenticationRealm
Deprecated.use #getProxyAuthState()Returns proxy authentication realm, if it has been used during authentication process. Otherwise returns null.- Returns:
- proxy authentication realm
-
getAuthenticationRealm
Deprecated.use #getHostAuthState()Returns authentication realm, if it has been used during authentication process. Otherwise returns null.- Returns:
- authentication realm
-
getContentCharSet
Returns the character set from the Content-Type header.- Parameters:
contentheader
- The content header.- Returns:
- String The character set.
-
getRequestCharSet
Returns the character encoding of the request from the Content-Type header.- Returns:
- String The character set.
-
getResponseCharSet
Returns the character encoding of the response from the Content-Type header.- Returns:
- String The character set.
-
getRecoverableExceptionCount
public int getRecoverableExceptionCount()Deprecated.no longer used Returns the number of "recoverable" exceptions thrown and handled, to allow for monitoring the quality of the connection.- Returns:
- The number of recoverable exceptions handled by the method.
-
responseBodyConsumed
protected void responseBodyConsumed()A response has been consumed.The default behavior for this class is to check to see if the connection should be closed, and close if need be, and to ensure that the connection is returned to the connection manager - if and only if we are not still inside the execute call.
-
getHostConfiguration
Deprecated.no longer applicableReturns thehost configuration
.- Specified by:
getHostConfiguration
in interfaceHttpMethod
- Returns:
- the host configuration
-
setHostConfiguration
Deprecated.no longer applicableSets thehost configuration
.- Parameters:
hostconfig
- The hostConfiguration to set
-
getMethodRetryHandler
Deprecated.useHttpMethodParams
Returns theretry handler
for this HTTP method- Returns:
- the methodRetryHandler
-
setMethodRetryHandler
Deprecated.useHttpMethodParams
Sets theretry handler
for this HTTP method- Parameters:
handler
- the methodRetryHandler to use when this method executed
-
getHostAuthState
Returns the target hostauthentication state
- Specified by:
getHostAuthState
in interfaceHttpMethod
- Returns:
- host authentication state
- Since:
- 3.0
-
getProxyAuthState
Returns the proxyauthentication state
- Specified by:
getProxyAuthState
in interfaceHttpMethod
- Returns:
- host authentication state
- Since:
- 3.0
-
isAborted
public boolean isAborted()Tests whether the execution of this method has been aborted- Returns:
- true if the execution of this method has been aborted, false otherwise
- Since:
- 3.0
-
isRequestSent
public boolean isRequestSent()Returns true if the HTTP has been transmitted to the target server in its entirety, false otherwise. This flag can be useful for recovery logic. If the request has not been transmitted in its entirety, it is safe to retry the failed method.- Specified by:
isRequestSent
in interfaceHttpMethod
- Returns:
- true if the request has been sent, false otherwise
-