|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.fourthline.cling.transport.impl.StreamClientImpl
public class StreamClientImpl
Default implementation based on the JDK's 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!
Field Summary | |
---|---|
protected StreamClientConfigurationImpl |
configuration
|
Constructor Summary | |
---|---|
StreamClientImpl(StreamClientConfigurationImpl configuration)
|
Method Summary | |
---|---|
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final StreamClientConfigurationImpl configuration
Constructor Detail |
---|
public StreamClientImpl(StreamClientConfigurationImpl configuration) throws InitializationException
InitializationException
Method Detail |
---|
public StreamClientConfigurationImpl getConfiguration()
getConfiguration
in interface StreamClient
public 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 StreamClient
requestMessage
- The message to send.
null
if no response has been received or an error occurred.public void stop()
StreamClient
stop
in interface StreamClient
protected 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
IOException
protected StreamResponseMessage createResponse(HttpURLConnection urlConnection, InputStream inputStream) throws Exception
Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |