public class StreamClientImpl extends Object implements StreamClient
HttpURLConnection.
This class works around a serious design issue in the SUN JDK, so it will not work on any JDK that
doesn't offer the sun.net.www.protocol.http.HttpURLConnection implementation.
This implementation DOES NOT WORK on Android. Read the Cling manual for alternatives for Android.
This implementation DOES NOT support Cling's server-side heartbeat for connection checking. Any data returned by a server has to be "valid HTTP", checked in Sun's HttpClient with:
ret = b[0] == 'H' && b[1] == 'T' && b[2] == 'T' && b[3] == 'P' && b[4] == '/' && b[5] == '1' && b[6] == '.';
Hence, if you are using this client, don't call Cling's
RemoteClientInfo.isRequestCancelled() function on your
server to send a heartbeat to the client!
| Modifier and Type | Field and Description |
|---|---|
protected StreamClientConfigurationImpl |
configuration |
| Constructor and Description |
|---|
StreamClientImpl(StreamClientConfigurationImpl configuration) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
applyHeaders(HttpURLConnection urlConnection,
org.seamless.http.Headers headers) |
protected void |
applyRequestBody(HttpURLConnection urlConnection,
StreamRequestMessage requestMessage) |
protected void |
applyRequestProperties(HttpURLConnection urlConnection,
StreamRequestMessage requestMessage) |
protected StreamResponseMessage |
createResponse(HttpURLConnection urlConnection,
InputStream inputStream) |
StreamClientConfigurationImpl |
getConfiguration() |
StreamResponseMessage |
sendRequest(StreamRequestMessage requestMessage)
Sends the given request via TCP (HTTP) and returns the response.
|
void |
stop()
Stops the service, closes any connection pools etc.
|
protected final StreamClientConfigurationImpl configuration
public StreamClientImpl(StreamClientConfigurationImpl configuration) throws InitializationException
InitializationExceptionpublic StreamClientConfigurationImpl getConfiguration()
getConfiguration in interface StreamClientpublic StreamResponseMessage sendRequest(StreamRequestMessage requestMessage)
StreamClient
This method must implement expiration of timed out requests using the
StreamClientConfiguration settings. When a request expires, a
null response will be returned.
This method will always try to complete execution without throwing an exception. It will
return null if an error occurs, and optionally log any exception messages.
The rules for logging are:
FINE.INFO level.WARNING level
This method is required to add a Host HTTP header to the
outgoing HTTP request, even if the given
StreamRequestMessage does not contain such a header.
This method will add the User-Agent HTTP header to the outgoing HTTP request if
the given message did not already contain such a header. You can set this default value in your
StreamClientConfiguration.
sendRequest in interface StreamClientrequestMessage - The message to send.null if no response has been received or an error occurred.public void stop()
StreamClientstop in interface StreamClientprotected void applyRequestProperties(HttpURLConnection urlConnection, StreamRequestMessage requestMessage)
protected void applyHeaders(HttpURLConnection urlConnection, org.seamless.http.Headers headers)
protected void applyRequestBody(HttpURLConnection urlConnection, StreamRequestMessage requestMessage) throws IOException
IOExceptionprotected StreamResponseMessage createResponse(HttpURLConnection urlConnection, InputStream inputStream) throws Exception
ExceptionCopyright © 2015 4th Line GmbH, Switzerland. All rights reserved.