Class Response
java.lang.Object
org.exoplatform.common.http.client.Response
- All Implemented Interfaces:
Cloneable,RoResponse
This class represents an intermediate response. It's used internally by the
modules. When all modules have handled the response then the HTTPResponse
fills in its fields with the data from this class.
- Version:
- 0.3-3 06/05/2001
- Author:
- Ronald Tschal�r
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intContent delimitersstatic final intpossible http protocols we (might) handlestatic final intsome known http versionsstatic final intstatic final intstatic final intour input stream (usually from the stream demux).static final int -
Constructor Summary
ConstructorsConstructorDescriptionResponse(String version, int status, String reason, NVPair[] headers, byte[] data, InputStream is, int cont_len) Create a new response with the given info. -
Method Summary
Modifier and TypeMethodDescriptionclone()voiddeleteHeader(String header) Removes a header field from the list of headers.voiddeleteTrailer(String trailer) Removes a trailer field from the list of trailers.byte[]getData()Reads all the response data into a byte array.final URIget the final URI of the document.final URLDeprecated.use getEffectiveURI() insteadretrieves the field for a given header.getHeaderAsDate(String hdr) retrieves the field for a given header.intgetHeaderAsInt(String hdr) retrieves the field for a given header.Gets an input stream from which the returned data can be read.final Stringgive the reason line associated with the status code.final intgive the status code for this request.getTrailer(String trailer) Retrieves the field for a given trailer.getTrailerAsDate(String trailer) Retrieves the field for a given trailer.intgetTrailerAsInt(String trailer) Retrieves the field for a given tailer.final Stringget the HTTP version used for the response.booleanSome responses such as those from a HEAD or with certain status codes don't have an entity.booleanvoidsetEffectiveURI(URI final_uri) set the final URI of the document.voidsetEffectiveURL(URL final_url) Deprecated.use setEffectiveURI() insteadvoidSet a header field in the list of headers.voidsetRetryRequest(boolean flag) Should the request be retried by the application? This can be used by modules to signal to the application that it should retry the request.voidsetTrailer(String trailer, String value) Set a trailer field in the list of trailers.
-
Field Details
-
inp_stream
our input stream (usually from the stream demux). Push input streams onto this if necessary. -
HTTP
static final int HTTPpossible http protocols we (might) handle- See Also:
-
HTTPS
static final int HTTPS- See Also:
-
SHTTP
static final int SHTTP- See Also:
-
HTTP_NG
static final int HTTP_NG- See Also:
-
HTTP_1_0
static final int HTTP_1_0some known http versions- See Also:
-
HTTP_1_1
static final int HTTP_1_1- See Also:
-
CD_NONE
static final int CD_NONEContent delimiters- See Also:
-
CD_HDRS
static final int CD_HDRS- See Also:
-
CD_0
static final int CD_0- See Also:
-
CD_CLOSE
static final int CD_CLOSE- See Also:
-
CD_CONTLEN
static final int CD_CONTLEN- See Also:
-
CD_CHUNKED
static final int CD_CHUNKED- See Also:
-
CD_MP_BR
static final int CD_MP_BR- See Also:
-
-
Constructor Details
-
Response
public Response(String version, int status, String reason, NVPair[] headers, byte[] data, InputStream is, int cont_len) Create a new response with the given info. This is used when creating a response in a requestHandler().If data is not null then that is used; else if the is is not null that is used; else the entity is empty. If the input stream is used then cont_len specifies the length of the data that can be read from it, or -1 if unknown.
- Parameters:
version- the response version (such as "HTTP/1.1")status- the status codereason- the reason lineheaders- the response headersdata- the response entityis- the response entity as an InputStreamcont_len- the length of the data in the InputStream
-
-
Method Details
-
getStatusCode
give the status code for this request. These are grouped as follows:- 1xx - Informational (new in HTTP/1.1)
- 2xx - Success
- 3xx - Redirection
- 4xx - Client Error
- 5xx - Server Error
- Specified by:
getStatusCodein interfaceRoResponse- Returns:
- the status code
- Throws:
IOException- If any exception occurs on the socket.
-
getReasonLine
give the reason line associated with the status code.- Specified by:
getReasonLinein interfaceRoResponse- Returns:
- the reason line associated with the status code.
- Throws:
IOException- If any exception occurs on the socket.
-
getVersion
get the HTTP version used for the response.- Specified by:
getVersionin interfaceRoResponse- Returns:
- the HTTP version returned by the server.
- Throws:
IOException- If any exception occurs on the socket.
-
getEffectiveURI
get the final URI of the document. This is set if the original request was deferred via the "moved" (301, 302, or 303) return status.- Returns:
- the new URI, or null if not redirected
- Throws:
IOException- If any exception occurs on the socket.
-
setEffectiveURI
set the final URI of the document. This is only for internal use. -
getEffectiveURL
Deprecated.use getEffectiveURI() insteadget the final URL of the document. This is set if the original request was deferred via the "moved" (301, 302, or 303) return status.- Throws:
IOException- If any exception occurs on the socket.- See Also:
-
setEffectiveURL
Deprecated.use setEffectiveURI() insteadset the final URL of the document. This is only for internal use. -
getHeader
retrieves the field for a given header.- Specified by:
getHeaderin interfaceRoResponse- Parameters:
hdr- the header name.- Returns:
- the value for the header, or null if non-existent.
- Throws:
IOException- If any exception occurs on the socket.
-
getHeaderAsInt
retrieves the field for a given header. The value is parsed as an int.- Specified by:
getHeaderAsIntin interfaceRoResponse- Parameters:
hdr- the header name.- Returns:
- the value for the header if the header exists
- Throws:
NumberFormatException- if the header's value is not a number or if the header does not exist.IOException- if any exception occurs on the socket.
-
getHeaderAsDate
retrieves the field for a given header. The value is parsed as a date; if this fails it is parsed as a long representing the number of seconds since 12:00 AM, Jan 1st, 1970. If this also fails an IllegalArgumentException is thrown.Note: When sending dates use Util.httpDate().
- Specified by:
getHeaderAsDatein interfaceRoResponse- Parameters:
hdr- the header name.- Returns:
- the value for the header, or null if non-existent.
- Throws:
IOException- If any exception occurs on the socket.IllegalArgumentException- If the header cannot be parsed as a date or time.
-
setHeader
Set a header field in the list of headers. If the header already exists it will be overwritten; otherwise the header will be added to the list. This is used by some modules when they process the header so that higher level stuff doesn't get confused when the headers and data don't match.- Parameters:
header- The name of header field to set.value- The value to set the field to.
-
deleteHeader
Removes a header field from the list of headers. This is used by some modules when they process the header so that higher level stuff doesn't get confused when the headers and data don't match.- Parameters:
header- The name of header field to remove.
-
getTrailer
Retrieves the field for a given trailer. Note that this should not be invoked until all the response data has been read. If invoked before, it will force the data to be read viagetData().- Specified by:
getTrailerin interfaceRoResponse- Parameters:
trailer- the trailer name.- Returns:
- the value for the trailer, or null if non-existent.
- Throws:
IOException- If any exception occurs on the socket.
-
getTrailerAsInt
Retrieves the field for a given tailer. The value is parsed as an int.- Specified by:
getTrailerAsIntin interfaceRoResponse- Parameters:
trailer- the tailer name.- Returns:
- the value for the trailer if the trailer exists
- Throws:
NumberFormatException- if the trailer's value is not a number or if the trailer does not exist.IOException- if any exception occurs on the socket.
-
getTrailerAsDate
Retrieves the field for a given trailer. The value is parsed as a date; if this fails it is parsed as a long representing the number of seconds since 12:00 AM, Jan 1st, 1970. If this also fails an IllegalArgumentException is thrown.Note: When sending dates use Util.httpDate().
- Specified by:
getTrailerAsDatein interfaceRoResponse- Parameters:
trailer- the trailer name.- Returns:
- the value for the trailer, or null if non-existent.
- Throws:
IllegalArgumentException- if the trailer's value is neither a legal date nor a number.IOException- if any exception occurs on the socket.IllegalArgumentException- If the header cannot be parsed as a date or time.
-
setTrailer
Set a trailer field in the list of trailers. If the trailer already exists it will be overwritten; otherwise the trailer will be added to the list. This is used by some modules when they process the trailer so that higher level stuff doesn't get confused when the trailer and data don't match.- Parameters:
trailer- The name of trailer field to set.value- The value to set the field to.
-
deleteTrailer
Removes a trailer field from the list of trailers. This is used by some modules when they process the trailer so that higher level stuff doesn't get confused when the trailers and data don't match.- Parameters:
trailer- The name of trailer field to remove.
-
getData
Reads all the response data into a byte array. Note that this method won't return until all the data has been received (so for instance don't invoke this method if the server is doing a server push). If getInputStream() had been previously called then this method only returns any unread data remaining on the stream and then closes it.- Specified by:
getDatain interfaceRoResponse- Returns:
- an array containing the data (body) returned. If no data was returned then it's set to a zero-length array.
- Throws:
IOException- If any io exception occured while reading the data- See Also:
-
getInputStream
Gets an input stream from which the returned data can be read. Note that if getData() had been previously called it will actually return a ByteArrayInputStream created from that data.- Specified by:
getInputStreamin interfaceRoResponse- Returns:
- the InputStream.
- Throws:
IOException- If any exception occurs on the socket.- See Also:
-
hasEntity
Some responses such as those from a HEAD or with certain status codes don't have an entity. This is detected by the client and can be queried here. Note that this won't try to do a read() on the input stream (it will however cause the headers to be read and parsed if not already done).- Returns:
- true if the response has an entity, false otherwise
- Throws:
IOException- Since:
- V0.3-1
-
setRetryRequest
public void setRetryRequest(boolean flag) Should the request be retried by the application? This can be used by modules to signal to the application that it should retry the request. It's used when the request used an HttpOutputStream and the module is therefore not able to retry the request itself. This flag is false by default.If a module sets this flag then it must also reset() the the HttpOutputStream so it may be reused by the application. It should then also use this HttpOutputStream to recognize the retried request in the requestHandler().
- Parameters:
flag- indicates whether the application should retry the request.
-
retryRequest
public boolean retryRequest()- Returns:
- true if the request should be retried.
-
clone
-