|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.commons.httpclient.HttpConnection
An abstraction of an HTTP 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 |
---|---|---|
Socket.setTcpNoDelay(boolean)
| SO_NODELAY | None |
Socket.setSoTimeout(int)
| SO_TIMEOUT | setConnectionTimeout(int)
|
Inner Class Summary | |
interface |
HttpConnection.ConnectionTimeoutException
Signals that a timeout occured while opening the socket. |
Field Summary | |
protected boolean |
isOpen
Whether or not I am connected. |
Constructor Summary | |
HttpConnection(HostConfiguration hostConfiguration)
Creates a new HttpConnection. |
|
HttpConnection(String host,
int port)
Constructor. |
|
HttpConnection(String host,
int port,
boolean secure)
Deprecated. use HttpConnection(String, int, Protocol) |
|
HttpConnection(String host,
int port,
Protocol protocol)
Constructor. |
|
HttpConnection(String proxyHost,
int proxyPort,
String host,
int port)
Constructor. |
|
HttpConnection(String proxyHost,
int proxyPort,
String host,
int port,
boolean secure)
Deprecated. use HttpConnection(String, int, String, int, Protocol) |
|
HttpConnection(String proxyHost,
int proxyPort,
String host,
String virtualHost,
int port,
Protocol protocol)
Create an instance |
|
HttpConnection(String host,
String virtualHost,
int port,
Protocol protocol)
Constructor. |
Method Summary | |
protected void |
assertNotOpen()
Throw an IllegalStateException if I am connected. |
protected void |
assertOpen()
Throw an IllegalStateException if I am not connected. |
void |
close()
Close my socket and streams. |
protected void |
closeSocketAndStreams()
Close everything out. |
void |
flushRequestOutputStream()
Flushes the output request stream. |
String |
getHost()
Return my host name. |
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. |
int |
getPort()
Return my port. |
Protocol |
getProtocol()
Get the protocol. |
String |
getProxyHost()
Return my proxy host. |
int |
getProxyPort()
Return my proxy port. |
OutputStream |
getRequestOutputStream()
Return a OutputStream suitable for writing (possibly
chunked) bytes to my OutputStream . |
OutputStream |
getRequestOutputStream(boolean useChunking)
Deprecated. Use new ChunkedOutputStream(httpConnecion.getRequestOutputStream()); |
InputStream |
getResponseInputStream()
Return the response input stream |
InputStream |
getResponseInputStream(HttpMethod method)
Deprecated. Use getResponseInputStream() instead. |
int |
getSendBufferSize()
Gets the socket's sendBufferSize. |
int |
getSoTimeout()
Return my Socket 's timeout, via Socket.setSoTimeout(int) , if the
connection is already open. |
String |
getVirtualHost()
Return my virtual host name. |
boolean |
isOpen()
Return true if I am connected, false otherwise. |
boolean |
isProxied()
Return true if I am (or I will be) connected 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()
Return true if I will (or I am) connected over a secure (HTTPS/SSL) 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()
Open this connection to the current host and port (via a proxy if so configured). |
void |
print(String data)
Write the specified String (as bytes) to my output stream. |
void |
printLine()
Write "\r\n".getBytes() to my output stream. |
void |
printLine(String data)
Write the specified String (as bytes), followed by "\r\n".getBytes() to my output stream. |
String |
readLine()
Read up to "\n" from my (unchunked) input stream. |
void |
releaseConnection()
Release the connection. |
void |
setConnectionTimeout(int timeout)
Sets the connection timeout. |
void |
setHost(String host)
Set my host name. |
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. |
void |
setPort(int port)
Set my port. |
void |
setProtocol(Protocol protocol)
Sets the protocol used by this connection. |
void |
setProxyHost(String host)
Set the host I should proxy through. |
void |
setProxyPort(int port)
Set the port I should proxy through. |
void |
setSecure(boolean secure)
Deprecated. use setProtocol(Protocol) |
void |
setSendBufferSize(int sendBufferSize)
Sets the socket's sendBufferSize. |
void |
setSoTimeout(int timeout)
Set my Socket 's timeout, via Socket.setSoTimeout(int) . |
void |
setStaleCheckingEnabled(boolean staleCheckEnabled)
Sets whether or not isStale() will be called when testing if this connection is open. |
void |
setVirtualHost(String host)
Set my virtual host name. |
void |
shutdownOutput()
Shutdown my Socket 's output, via Socket.shutdownOutput()
when running on JVM 1.3 or higher. |
void |
tunnelCreated()
Calling this method indicates that the proxy has successfully created the tunnel to the host. |
void |
write(byte[] data)
Write the specified bytes to my output stream. |
void |
write(byte[] data,
int offset,
int length)
Write length bytes in data starting at offset to my output stream. |
void |
writeLine()
Write "\r\n".getBytes() to my output stream. |
void |
writeLine(byte[] data)
Write the specified bytes, followed by "\r\n".getBytes() to my output stream. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Field Detail |
protected boolean isOpen
Constructor Detail |
public HttpConnection(String host, int port)
host
- the host I should connect toport
- the port I should connect topublic HttpConnection(String host, int port, boolean secure)
host
- the host I should connect toport
- the port I should connect tosecure
- when true, connect via HTTPS (SSL)HttpConnection(String,int,Protocol)
public HttpConnection(String host, int port, Protocol protocol)
host
- the host I should connect toport
- the port I should connect toprotocol
- the protocol to usepublic HttpConnection(String host, String virtualHost, int port, Protocol protocol)
host
- the host I should connect tovirtualHost
- the virtual host I will be sending requests toport
- the port I should connect toprotocol
- the protocol to usepublic HttpConnection(String proxyHost, int proxyPort, String host, int port)
proxyHost
- the host I should proxy viaproxyPort
- the port I should proxy viahost
- the host I should connect toport
- the port I should connect topublic HttpConnection(String proxyHost, int proxyPort, String host, int port, boolean secure)
proxyHost
- the host I should proxy viaproxyPort
- the port I should proxy viahost
- the host I should connect to. Parameter value must be non-null.port
- the port I should connect tosecure
- when true, connect via HTTPS (SSL)HttpConnection(String, int, String, String, int, Protocol)
public HttpConnection(HostConfiguration hostConfiguration)
hostConfiguration
- the host/proxy/protocol to usepublic HttpConnection(String proxyHost, int proxyPort, String host, String virtualHost, int port, Protocol protocol)
proxyHost
- the host I should proxy viaproxyPort
- the port I should proxy viahost
- the host I should connect to. Parameter value must be non-null.virtualHost
- the virtual host I will be sending requests toport
- the port I should connect toprotocol
- The protocol to use. Parameter value must be non-null.Method Detail |
public String getHost()
public void setHost(String host) throws IllegalStateException
host
- the host I should connect to. Parameter value must be non-null.public String getVirtualHost()
public void setVirtualHost(String host) throws IllegalStateException
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 usedpublic int getPort()
public void setPort(int port) throws IllegalStateException
port
- the port I should connect topublic String getProxyHost()
public void setProxyHost(String host) throws IllegalStateException
host
- the host I should proxy through.public int getProxyPort()
public void setProxyPort(int port) throws IllegalStateException
port
- the host I should proxy through.public boolean isSecure()
public Protocol getProtocol()
public void setSecure(boolean secure) throws IllegalStateException
secure
- whether or not I should connect over HTTPS (SSL).setProtocol(Protocol)
public void setProtocol(Protocol protocol)
protocol
- The new protocol.public InetAddress getLocalAddress()
public void setLocalAddress(InetAddress localAddress)
localAddress
- the local address to usepublic boolean isOpen()
public boolean isStaleCheckingEnabled()
true
if enabledisStale()
public void setStaleCheckingEnabled(boolean staleCheckEnabled)
staleCheckEnabled
- true
to enable isStale()isStale()
,
isOpen()
protected boolean isStale()
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
PushbackInputStream
, so although data might be read, what is visible
to clients of the connection will not change with this call.
public boolean isProxied()
public void setLastResponseInputStream(InputStream inStream)
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.
inStream
- The stream associated with an HttpMethod.public InputStream getLastResponseInputStream()
Clients will generally not need to call this function unless
using HttpConnection directly, instead of calling HttpClient.executeMethod(org.apache.commons.httpclient.HttpMethod)
.
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.
InputStream
corresponding to the body of the last
response.public void setSoTimeout(int timeout) throws SocketException, IllegalStateException
Socket
's timeout, via Socket.setSoTimeout(int)
. 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!
timeout
- the timeout valuepublic int getSoTimeout() throws SocketException
Socket
's timeout, via Socket.setSoTimeout(int)
, 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!
public void setConnectionTimeout(int timeout)
timeout
- The timeout in milliseconds. 0 means timeout is not used.public void open() throws IOException
ProtocolSocketFactory
.public void tunnelCreated() throws IllegalStateException, IOException
public boolean isTransparent()
public void flushRequestOutputStream() throws IOException
public OutputStream getRequestOutputStream() throws IOException, IllegalStateException
OutputStream
suitable for writing (possibly
chunked) bytes to my OutputStream
.public OutputStream getRequestOutputStream(boolean useChunking) throws IOException, IllegalStateException
OutputStream
suitable for writing (possibly
chunked) bytes to my OutputStream
.useChunking
- when true the chunked transfer-encoding will
be usedpublic InputStream getResponseInputStream(HttpMethod method) throws IOException, IllegalStateException
InputStream
suitable for reading (possibly
chunked) bytes from my InputStream
.
If the given HttpMethod
contains
a Transfer-Encoding: chunked header,
the returned stream will be configured
to read chunked bytes.
method
- This argument is ignored.public InputStream getResponseInputStream() throws IOException, IllegalStateException
public boolean isResponseAvailable() throws IOException
public boolean isResponseAvailable(int timeout) throws IOException
timeout
- The number milliseconds to wait for input data to become availablepublic void write(byte[] data) throws IOException, IllegalStateException, HttpRecoverableException
data
- the data to be writtenwrite(byte[],int,int)
public void write(byte[] data, int offset, int length) throws IOException, IllegalStateException, HttpRecoverableException
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(byte[] data) throws IOException, IllegalStateException, HttpRecoverableException
data
- the bytes to be writtenpublic void writeLine() throws IOException, IllegalStateException, HttpRecoverableException
public void print(String data) throws IOException, IllegalStateException, HttpRecoverableException
data
- the string to be writtenpublic void printLine(String data) throws IOException, IllegalStateException, HttpRecoverableException
data
- the data to be writtenpublic void printLine() throws IOException, IllegalStateException, HttpRecoverableException
public String readLine() throws IOException, IllegalStateException
public void shutdownOutput()
Socket
's output, via Socket.shutdownOutput()
when running on JVM 1.3 or higher.public void close()
public HttpConnectionManager getHttpConnectionManager()
public void setHttpConnectionManager(HttpConnectionManager httpConnectionManager)
httpConnectionManager
- The httpConnectionManager to setpublic void releaseConnection()
protected void closeSocketAndStreams()
protected void assertNotOpen() throws IllegalStateException
IllegalStateException
if I am connected.protected void assertOpen() throws IllegalStateException
IllegalStateException
if I am not connected.public int getSendBufferSize() throws SocketException
Socket.getSendBufferSize()
public void setSendBufferSize(int sendBufferSize) throws SocketException
sendBufferSize
- the size to set for the socket OutputStreamSocket.setSendBufferSize(int)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |