Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.apache.commons.httpclient.HttpConnection
public class HttpConnection
extends java.lang.Object
InputStream
and OutputStream
pair, together with the relevant attributes.
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.setTcpNoDelay(boolean)
|
java.net.Socket.setSoTimeout(int)
| SO_TIMEOUT | HttpConnectionParams.setSoTimeout(int)
|
java.net.Socket.setSendBufferSize(int)
| SO_SNDBUF | HttpConnectionParams.setSendBufferSize(int)
|
java.net.Socket.setReceiveBufferSize(int)
| SO_RCVBUF | HttpConnectionParams.setReceiveBufferSize(int)
|
Field Summary | |
protected boolean |
|
Constructor Summary | |
| |
| |
| |
| |
| |
| |
|
Method Summary | |
protected void |
|
protected void |
|
void |
|
boolean |
|
protected void |
|
void |
|
String |
|
HttpConnectionManager |
|
InputStream |
|
InetAddress |
|
HttpConnectionParams |
|
int |
|
Protocol |
|
String |
|
int |
|
OutputStream |
|
InputStream |
|
int |
|
int |
|
protected Socket |
|
String |
|
protected boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
protected boolean |
|
boolean |
|
boolean |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
String |
|
String |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
protected void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
public 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.
- Parameters:
host
- the host to connect tovirtualHost
- the virtual host requests will be sent toport
- the port to connect toprotocol
- the protocol to use
public HttpConnection(String host, int port)
Creates a new HTTP connection for the given host and port.
- Parameters:
host
- the host to connect toport
- the port to connect to
public HttpConnection(String proxyHost, int proxyPort, String host, String virtualHost, int port, Protocol protocol)
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 viaproxyPort
- the port to proxy viahost
- the host to connect to. Parameter value must be non-null.virtualHost
- No longer applicable.port
- the port to connect toprotocol
- The protocol to use. Parameter value must be non-null.
public 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.
- Parameters:
proxyHost
- the host to proxy viaproxyPort
- the port to proxy viahost
- the host to connect toport
- the port to connect to
public 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.
- Parameters:
proxyHost
- the host to proxy viaproxyPort
- the port to proxy viahost
- the host to connect to. Parameter value must be non-null.port
- the port to connect toprotocol
- The protocol to use. Parameter value must be non-null.
public HttpConnection(String host, int port, Protocol protocol)
Creates a new HTTP connection for the given host and port using the given protocol.
- Parameters:
host
- the host to connect toport
- the port to connect toprotocol
- the protocol to use
public HttpConnection(HostConfiguration hostConfiguration)
Creates a new HTTP connection for the given host configuration.
- Parameters:
hostConfiguration
- the host/proxy/protocol to use
protected void assertNotOpen() throws IllegalStateException
Throws anIllegalStateException
if the connection is already open.
protected void assertOpen() throws IllegalStateException
Throws anIllegalStateException
if the connection is not open.
public void close()
Closes the socket and streams.
public boolean closeIfStale() throws IOException
Closes the connection if stale.
- Returns:
true
if the connection was stale and therefore closed,false
otherwise.
- Since:
- 3.0
- See Also:
isStale()
protected void closeSocketAndStreams()
Closes everything out.
public void flushRequestOutputStream() throws IOException
Flushes the output request stream. This method should be called to ensure that data written to the request OutputStream is sent to the server.
public String getHost()
Returns the host.
- Returns:
- the host.
public HttpConnectionManager getHttpConnectionManager()
Returns the httpConnectionManager.
- Returns:
- HttpConnectionManager
public InputStream getLastResponseInputStream()
Returns the stream used to read the last response's body. Clients will generally not need to call this function unless using HttpConnection directly, instead of callingHttpClient.executeMethod
. 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.
public InetAddress getLocalAddress()
Return the local address used when creating the connection. If null, the default address is used.
- Returns:
- InetAddress the local address to be used when creating Sockets
public HttpConnectionParams getParams()
ReturnsHTTP protocol parameters
associated with this method.
- Returns:
- HTTP parameters.
- Since:
- 3.0
public int getPort()
Returns the port of the host. If the port is -1 (or less than 0) the default port for the current protocol is returned.
- Returns:
- the port.
public Protocol getProtocol()
Returns the protocol used to establish the connection.
- Returns:
- The protocol
public String getProxyHost()
Returns the proxy host.
- Returns:
- the proxy host.
public int getProxyPort()
Returns the port of the proxy host.
- Returns:
- the proxy port.
public OutputStream getRequestOutputStream() throws IOException, IllegalStateException
Returns anOutputStream
suitable for writing the request.
- Returns:
- a stream to write the request to
public InputStream getResponseInputStream() throws IOException, IllegalStateException
Return aInputStream
suitable for reading the response.
- Returns:
- InputStream The response input stream.
public int getSendBufferSize() throws SocketException
Gets the socket's sendBufferSize.
- 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
- See Also:
Socket.getSendBufferSize()
public int getSoTimeout() throws SocketException
Deprecated. Use
HttpConnectionParams.getSoTimeout()
,getParams()
.Returns theSocket
's timeout, viaSocket.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
protected Socket getSocket()
Returns the connection socket.
- Returns:
- the socket.
- Since:
- 3.0
public String getVirtualHost()
Deprecated. no longer applicable
Returns the target virtual host.
- Returns:
- the virtual host.
protected boolean isLocked()
Tests if the connection is locked. Locked connections cannot be released. An attempt to release a locked connection will have no effect.
- Returns:
- true if the connection is locked, false otherwise.
- Since:
- 3.0
public boolean isOpen()
Tests if the connection is open.
- Returns:
true
if the connection is open
public boolean isProxied()
Returns true if the connection is established via a proxy, false otherwise.
- Returns:
- true if a proxy is used to establish the connection, false otherwise.
public boolean isResponseAvailable() throws IOException
Tests if input data avaialble. This method returns immediately and does not perform any read operations on the input socket
- Returns:
- boolean true if input data is available, false otherwise.
public boolean isResponseAvailable(int timeout) throws IOException
Tests if input data becomes available within the given period time in milliseconds.
- Parameters:
timeout
- The number milliseconds to wait for input data to become available
- Returns:
- boolean true if input data is availble, false otherwise.
public boolean isSecure()
Returns true if the connection is established over a secure protocol.
- Returns:
- true if connected over a secure protocol.
protected boolean isStale() throws IOException
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. 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 aBufferedInputStream
, 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.
public boolean isStaleCheckingEnabled()
Deprecated. Use
HttpConnectionParams.isStaleCheckingEnabled()
,getParams()
.Tests if stale checking is enabled.
- Returns:
true
if enabled
- See Also:
isStale()
public boolean isTransparent()
Indicates if the connection is completely transparent from end to end.
- Returns:
- true if conncetion is not proxied or tunneled through a transparent proxy; false otherwise.
public void open() throws IOException
Establishes a connection to the specified host and port (via a proxy if specified). The underlying socket is created from theProtocolSocketFactory
.
public void print(String data) throws IOException, IllegalStateException
Deprecated. Use
print(String,String)
Writes the specified String (as bytes) to the output stream.
- Parameters:
data
- the string to be written
public void print(String data, String charset) throws IOException, IllegalStateException
Writes the specified String (as bytes) to the output stream.
- Parameters:
data
- the string to be writtencharset
- the charset to use for writing the data
- Since:
- 3.0
public void printLine() throws IOException, IllegalStateException
Writes "\r\n".getBytes() to the output stream.
public void printLine(String data) throws IOException, IllegalStateException
Deprecated. Use
printLine(String,String)
Writes the specified String (as bytes), followed by "\r\n".getBytes() to the output stream.
- Parameters:
data
- the data to be written
public void printLine(String data, String charset) throws IOException, IllegalStateException
Writes the specified String (as bytes), followed by "\r\n".getBytes() to the output stream.
- Parameters:
data
- the data to be writtencharset
- the charset to use for writing the data
- Since:
- 3.0
public String readLine() throws IOException, IllegalStateException
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
public String readLine(String charset) throws IOException, IllegalStateException
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.
- Parameters:
charset
- the charset to use for reading the data
- Returns:
- a line from the response
- Since:
- 3.0
public void releaseConnection()
Releases the connection. If the connection is locked or does not have a connection manager associated with it, this method has no effect. Note that it is completely safe to call this method multiple times.
public void setConnectionTimeout(int timeout)
Deprecated. Use
HttpConnectionParams.setConnectionTimeout(int)
,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.
public void setHost(String host) throws IllegalStateException
Sets the host to connect to.
- Parameters:
host
- the host to connect to. Parameter value must be non-null.
public void setHttpConnectionManager(HttpConnectionManager httpConnectionManager)
Sets the httpConnectionManager.
- Parameters:
httpConnectionManager
- The httpConnectionManager to set
public void setLastResponseInputStream(InputStream inStream)
Set the state to keep track of the last response for the last request. 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.
public void setLocalAddress(InetAddress localAddress)
Set the local address used when creating the connection. If unset or null, the default address is used.
- Parameters:
localAddress
- the local address to use
protected void setLocked(boolean locked)
Locks or unlocks the connection. Locked connections cannot be released. An attempt to release a locked connection will have no effect.
- Parameters:
locked
- true to lock the connection, false to unlock the connection.
- Since:
- 3.0
public void setParams(HttpConnectionParams params)
AssignsHTTP protocol parameters
for this method.
- Since:
- 3.0
- See Also:
HttpConnectionParams
public void setPort(int port) throws IllegalStateException
Sets the port to connect to.
- Parameters:
port
- the port to connect to
public void setProtocol(Protocol protocol)
Sets the protocol used to establish the connection
- Parameters:
protocol
- The protocol to use.
public void setProxyHost(String host) throws IllegalStateException
Sets the host to proxy through.
- Parameters:
host
- the host to proxy through.
public void setProxyPort(int port) throws IllegalStateException
Sets the port of the host to proxy through.
- Parameters:
port
- the port of the host to proxy through.
public void setSendBufferSize(int sendBufferSize) throws SocketException
Deprecated. Use
HttpConnectionParams.setSendBufferSize(int)
,getParams()
.Sets the socket's sendBufferSize.
- Parameters:
sendBufferSize
- the size to set for the socket OutputStream
- See Also:
Socket.setSendBufferSize(int)
public void setSoTimeout(int timeout) throws SocketException, IllegalStateException
Deprecated. Use
HttpConnectionParams.setSoTimeout(int)
,getParams()
.Set theSocket
's timeout, viaSocket.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
public void setSocketTimeout(int timeout) throws SocketException, IllegalStateException
SetsSO_TIMEOUT
value directly on the underlyingsocket
. This method does not change the default read timeout value set viaHttpConnectionParams
.
- Parameters:
timeout
- the timeout value
- Since:
- 3.0
public void setStaleCheckingEnabled(boolean staleCheckEnabled)
Deprecated. Use
HttpConnectionParams.setStaleCheckingEnabled(boolean)
,getParams()
.Sets whether or not isStale() will be called when testing if this connection is open. Setting this flag tofalse
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 tofalse
some method executions will result in IOExceptions and they will have to be retried.
- Parameters:
staleCheckEnabled
-true
to enable isStale()
public void setVirtualHost(String host) throws IllegalStateException
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
public void shutdownOutput()
Deprecated. unused
Attempts to shutdown theSocket
's output, via Socket.shutdownOutput() when running on JVM 1.3 or higher.
public void tunnelCreated() throws IllegalStateException, IOException
Instructs the proxy to establish a secure tunnel to the host. The socket will be switched to the secure socket. Subsequent communication is done via the secure socket. The method can only be called once on a proxied secure connection.
public void write(byte[] data) throws IOException, IllegalStateException
Writes the specified bytes to the output stream.
- Parameters:
data
- the data to be written
- See Also:
write(byte[],int,int)
public void write(byte[] data, int offset, int length) throws IOException, IllegalStateException
Writes length bytes in data starting at offset to the output stream. The general contract for write(b, off, len) is that some of the bytes in the array b are written to the output stream in order; element b[off] is the first byte written and b[off+len-1] is the last byte written by this operation.
- Parameters:
data
- array containing the data to be written.offset
- the start offset in the data.length
- the number of bytes to write.
public void writeLine() throws IOException, IllegalStateException
Writes "\r\n".getBytes() to the output stream.
public void writeLine(byte[] data) throws IOException, IllegalStateException
Writes the specified bytes, followed by "\r\n".getBytes() to the output stream.
- Parameters:
data
- the bytes to be written