org.apache.commons.httpclient
public class HttpConnection extends Object
The following options are set on the socket before getting the input/output streams in the open method:
Socket Method | Sockets Option | Configuration |
---|---|---|
java.net.Socket#setTcpNoDelay(boolean) | SO_NODELAY | HttpConnectionParams |
java.net.Socket#setSoTimeout(int) | SO_TIMEOUT | HttpConnectionParams |
java.net.Socket#setSendBufferSize(int) | SO_SNDBUF | HttpConnectionParams |
java.net.Socket#setReceiveBufferSize(int) | SO_RCVBUF | HttpConnectionParams |
Version: $Revision: 480424 $ $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $
Field Summary | |
---|---|
protected boolean | isOpen Whether or not the connection is connected. |
Constructor Summary | |
---|---|
HttpConnection(String host, int port)
Creates a new HTTP connection for the given host and port.
| |
HttpConnection(String host, int port, Protocol protocol)
Creates a new HTTP connection for the given host and port
using the given protocol.
| |
HttpConnection(String host, String virtualHost, int port, Protocol protocol)
Creates a new HTTP connection for the given host with the virtual
alias and port using given protocol.
| |
HttpConnection(String proxyHost, int proxyPort, String host, int port)
Creates a new HTTP connection for the given host and port via the
given proxy host and port using the default protocol.
| |
HttpConnection(HostConfiguration hostConfiguration)
Creates a new HTTP connection for the given host configuration.
| |
HttpConnection(String proxyHost, int proxyPort, String host, String virtualHost, int port, Protocol protocol)
Creates a new HTTP connection for the given host with the virtual
alias and port via the given proxy host and port using the given
protocol.
| |
HttpConnection(String proxyHost, int proxyPort, String host, int port, Protocol protocol)
Creates a new HTTP connection for the given host with the virtual
alias and port via the given proxy host and port using the given
protocol.
|
Method Summary | |
---|---|
protected void | assertNotOpen()
Throws an IllegalStateException if the connection is already open.
|
protected void | assertOpen()
Throws an IllegalStateException if the connection is not open.
|
void | close()
Closes the socket and streams. |
boolean | closeIfStale()
Closes the connection if stale.
|
protected void | closeSocketAndStreams()
Closes everything out. |
void | flushRequestOutputStream()
Flushes the output request stream. |
String | getHost()
Returns the host.
|
HttpConnectionManager | getHttpConnectionManager()
Returns the httpConnectionManager. |
InputStream | getLastResponseInputStream()
Returns the stream used to read the last response's body.
|
InetAddress | getLocalAddress()
Return the local address used when creating the connection.
|
HttpConnectionParams | getParams()
Returns HTTP protocol parameters associated with this method.
|
int | getPort()
Returns the port of the host.
|
Protocol | getProtocol()
Returns the protocol used to establish the connection. |
String | getProxyHost()
Returns the proxy host.
|
int | getProxyPort()
Returns the port of the proxy host.
|
OutputStream | getRequestOutputStream()
Returns an OutputStream suitable for writing the request.
|
InputStream | getResponseInputStream()
Return a InputStream suitable for reading the response. |
int | getSendBufferSize()
Gets the socket's sendBufferSize.
|
protected Socket | getSocket()
Returns the connection socket.
|
int | getSoTimeout()
Returns the Socket's timeout, via Socket#getSoTimeout, if the
connection is already open. |
String | getVirtualHost()
Returns the target virtual host.
|
protected boolean | isLocked()
Tests if the connection is locked. |
boolean | isOpen()
Tests if the connection is open.
|
boolean | isProxied()
Returns true if the connection is established via a proxy,
false otherwise.
|
boolean | isResponseAvailable()
Tests if input data avaialble. |
boolean | isResponseAvailable(int timeout)
Tests if input data becomes available within the given period time in milliseconds.
|
boolean | isSecure()
Returns true if the connection is established over
a secure protocol.
|
protected boolean | isStale()
Determines whether this connection is "stale", which is to say that either
it is no longer open, or an attempt to read the connection would fail.
|
boolean | isStaleCheckingEnabled()
Tests if stale checking is enabled.
|
boolean | isTransparent()
Indicates if the connection is completely transparent from end to end.
|
void | open()
Establishes a connection to the specified host and port
(via a proxy if specified).
|
void | print(String data) |
void | print(String data, String charset)
Writes the specified String (as bytes) to the output stream.
|
void | printLine(String data) |
void | printLine(String data, String charset)
Writes the specified String (as bytes), followed by
"\r\n".getBytes() to the output stream.
|
void | printLine()
Writes "\r\n".getBytes() to the output stream.
|
String | readLine()
Reads up to "\n" from the (unchunked) input stream.
|
String | readLine(String charset)
Reads up to "\n" from the (unchunked) input stream.
|
void | releaseConnection()
Releases the connection. |
void | setConnectionTimeout(int timeout)
Sets the connection timeout. |
void | setHost(String host)
Sets the host to connect to.
|
void | setHttpConnectionManager(HttpConnectionManager httpConnectionManager)
Sets the httpConnectionManager. |
void | setLastResponseInputStream(InputStream inStream)
Set the state to keep track of the last response for the last request.
|
void | setLocalAddress(InetAddress localAddress)
Set the local address used when creating the connection.
|
protected void | setLocked(boolean locked)
Locks or unlocks the connection. |
void | setParams(HttpConnectionParams params)
Assigns HTTP protocol parameters for this method.
|
void | setPort(int port)
Sets the port to connect to.
|
void | setProtocol(Protocol protocol)
Sets the protocol used to establish the connection
|
void | setProxyHost(String host)
Sets the host to proxy through.
|
void | setProxyPort(int port)
Sets the port of the host to proxy through.
|
void | setSendBufferSize(int sendBufferSize)
Sets the socket's sendBufferSize.
|
void | setSocketTimeout(int timeout)
Sets SO_TIMEOUT value directly on the underlying Socket socket .
|
void | setSoTimeout(int timeout)
Set the Socket's timeout, via Socket#setSoTimeout. |
void | setStaleCheckingEnabled(boolean staleCheckEnabled)
Sets whether or not isStale() will be called when testing if this connection is open.
|
void | setVirtualHost(String host)
Sets the virtual host to target.
|
void | shutdownOutput()
Attempts to shutdown the Socket's output, via Socket.shutdownOutput()
when running on JVM 1.3 or higher.
|
void | tunnelCreated()
Instructs the proxy to establish a secure tunnel to the host. |
void | write(byte[] data)
Writes the specified bytes to the output stream.
|
void | write(byte[] data, int offset, int length)
Writes length bytes in data starting at
offset to the output stream.
|
void | writeLine(byte[] data)
Writes the specified bytes, followed by "\r\n".getBytes() to the
output stream.
|
void | writeLine()
Writes "\r\n".getBytes() to the output stream.
|
Parameters: host the host to connect to port the port to connect to
Parameters: host the host to connect to port the port to connect to protocol the protocol to use
Parameters: host the host to connect to virtualHost the virtual host requests will be sent to port the port to connect to protocol the protocol to use
Parameters: proxyHost the host to proxy via proxyPort the port to proxy via host the host to connect to port the port to connect to
Parameters: hostConfiguration the host/proxy/protocol to use
Deprecated: use #HttpConnection(String, int, String, int, Protocol)
Creates a new HTTP connection for the given host with the virtual alias and port via the given proxy host and port using the given protocol.Parameters: proxyHost the host to proxy via proxyPort the port to proxy via host the host to connect to. Parameter value must be non-null. virtualHost No longer applicable. port the port to connect to protocol The protocol to use. Parameter value must be non-null.
Parameters: proxyHost the host to proxy via proxyPort the port to proxy via host the host to connect to. Parameter value must be non-null. port the port to connect to protocol The protocol to use. Parameter value must be non-null.
Throws: IllegalStateException if connected
Throws: IllegalStateException if not connected
Returns: true
if the connection was stale and therefore closed,
false
otherwise.
Since: 3.0
Throws: IOException if an I/O problem occurs
Returns: the host.
Returns: HttpConnectionManager
Clients will generally not need to call this function unless using HttpConnection directly, instead of calling HttpClient. For those clients, call this function, and if it returns a non-null stream, close the stream before attempting to execute a method. Note that calling "close" on the stream returned by this function may close the connection if the previous response contained a "Connection: close" header.
Returns: An InputStream corresponding to the body of the last response.
Returns: InetAddress the local address to be used when creating Sockets
Returns: the port.
Returns: The protocol
Returns: the proxy host.
Returns: the proxy port.
Returns: a stream to write the request to
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Returns: InputStream The response input stream.
Throws: IOException If an IO problem occurs IllegalStateException If the connection isn't open.
Returns: the size of the buffer for the socket OutputStream, -1 if the value has not been set and the socket has not been opened
Throws: SocketException if an error occurs while getting the socket value
See Also: Socket#getSendBufferSize()
Returns: the socket.
Since: 3.0
Deprecated: Use getSoTimeout, getParams.
Returns the Socket's timeout, via Socket#getSoTimeout, if the connection is already open. If no connection is open, return the value subsequent connection will use.Note: This is not a connection timeout but a timeout on network traffic!
Returns: the timeout value
Deprecated: no longer applicable
Returns the target virtual host.Returns: the virtual host.
Returns: true if the connection is locked, false otherwise.
Since: 3.0
Returns: true
if the connection is open
Returns: true if a proxy is used to establish the connection, false otherwise.
Returns: boolean true if input data is available, false otherwise.
Throws: IOException If an IO problem occurs IllegalStateException If the connection isn't open.
Parameters: timeout The number milliseconds to wait for input data to become available
Returns: boolean true if input data is availble, false otherwise.
Throws: IOException If an IO problem occurs IllegalStateException If the connection isn't open.
Returns: true if connected over a secure protocol.
Unfortunately, due to the limitations of the JREs prior to 1.4, it is not possible to test a connection to see if both the read and write channels are open - except by reading and writing. This leads to a difficulty when some connections leave the "write" channel open, but close the read channel and ignore the request. This function attempts to ameliorate that problem by doing a test read, assuming that the caller will be doing a write followed by a read, rather than the other way around.
To avoid side-effects, the underlying connection is wrapped by a BufferedInputStream, so although data might be read, what is visible to clients of the connection will not change with this call.Returns: true if the connection is already closed, or a read would fail.
Throws: IOException if the stale connection test is interrupted.
Deprecated: Use isStaleCheckingEnabled, getParams.
Tests if stale checking is enabled.Returns: true
if enabled
Returns: true if conncetion is not proxied or tunneled through a transparent proxy; false otherwise.
Throws: IOException if an attempt to establish the connection results in an I/O error.
Deprecated: Use HttpConnection Writes the specified String (as bytes) to the output stream.
Parameters: data the string to be written
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Parameters: data the string to be written charset the charset to use for writing the data
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Since: 3.0
Deprecated: Use HttpConnection Writes the specified String (as bytes), followed by "\r\n".getBytes() to the output stream.
Parameters: data the data to be written
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Parameters: data the data to be written charset the charset to use for writing the data
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Since: 3.0
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Deprecated: use #readLine(String)
Reads up to "\n" from the (unchunked) input stream. If the stream ends before the line terminator is found, the last part of the string will still be returned.Returns: a line from the response
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Parameters: charset the charset to use for reading the data
Returns: a line from the response
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Since: 3.0
Deprecated: Use HttpConnectionParams, getParams.
Sets the connection timeout. This is the maximum time that may be spent until a connection is established. The connection will fail after this amount of time.Parameters: timeout The timeout in milliseconds. 0 means timeout is not used.
Parameters: host the host to connect to. Parameter value must be non-null.
Throws: IllegalStateException if the connection is already open
Parameters: httpConnectionManager The httpConnectionManager to set
The connection managers use this to ensure that previous requests are properly closed before a new request is attempted. That way, a GET request need not be read in its entirety before a new request is issued. Instead, this stream can be closed as appropriate.
Parameters: inStream The stream associated with an HttpMethod.
Parameters: localAddress the local address to use
Parameters: locked true to lock the connection, false to unlock the connection.
Since: 3.0
Parameters: port the port to connect to
Throws: IllegalStateException if the connection is already open
Parameters: protocol The protocol to use.
Throws: IllegalStateException if the connection is already open
Parameters: host the host to proxy through.
Throws: IllegalStateException if the connection is already open
Parameters: port the port of the host to proxy through.
Throws: IllegalStateException if the connection is already open
Deprecated: Use HttpConnectionParams, getParams.
Sets the socket's sendBufferSize.Parameters: sendBufferSize the size to set for the socket OutputStream
Throws: SocketException if an error occurs while setting the socket value
See Also: Socket#setSendBufferSize(int)
SO_TIMEOUT
value directly on the underlying Socket socket
.
This method does not change the default read timeout value set via
HttpConnectionParams.
Parameters: timeout the timeout value
Throws: SocketException - if there is an error in the underlying protocol, such as a TCP error. IllegalStateException if not connected
Since: 3.0
Deprecated: Use HttpConnectionParams, getParams.
Set the Socket's timeout, via Socket#setSoTimeout. If the connection is already open, the SO_TIMEOUT is changed. If no connection is open, then subsequent connections will use the timeout value.Note: This is not a connection timeout but a timeout on network traffic!
Parameters: timeout the timeout value
Throws: SocketException - if there is an error in the underlying protocol, such as a TCP error.
Deprecated: Use HttpConnectionParams, getParams.
Sets whether or not isStale() will be called when testing if this connection is open.Setting this flag to false
will increase performance when reusing
connections, but it will also make them less reliable. Stale checking ensures that
connections are viable before they are used. When set to false
some
method executions will result in IOExceptions and they will have to be retried.
Parameters: staleCheckEnabled true
to enable isStale()
See Also: isStale
Deprecated: no longer applicable
Sets the virtual host to target.Parameters: host the virtual host name that should be used instead of physical host name when sending HTTP requests. Virtual host name can be set to null if virtual host name is not to be used
Throws: IllegalStateException if the connection is already open
Deprecated: unused
Attempts to shutdown the Socket's output, via Socket.shutdownOutput() when running on JVM 1.3 or higher.Throws: IllegalStateException if connection is not secure and proxied or if the socket is already secure. IOException if an attempt to establish the secure tunnel results in an I/O error.
Parameters: data the data to be written
Throws: IllegalStateException if not connected IOException if an I/O problem occurs
See Also: (byte[],int,int)
Parameters: data array containing the data to be written. offset the start offset in the data. length the number of bytes to write.
Throws: IllegalStateException if not connected IOException if an I/O problem occurs
Parameters: data the bytes to be written
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs
Throws: IllegalStateException if the connection is not open IOException if an I/O problem occurs