public class AbstractRestOperation extends AbstractSynchronizableOperation implements com.softwareag.mobile.runtime.comms.IConnectionCallback
AbstractRestOperation
is an thread save, derivable
abstraction for remote communication using Representational state transfer
(REST).
This class contains the necessary implementation to establish the connection
to the remote host. Clients can register one ore more
IOperationDelegate
's to listen to the operations state.
By extending, clients need to set the URL by using setUrl(String)
.
The connection can be parameterized using query (
addQueryParameter(String, String)
or header
addHeaderParameter(String, String)
parameters.
The MD HTTP connection layer supports GET, POST, PUT and DELETE calls.
Clients have to overwrite getHTTPMethod()
or use
setHttpMethod(String)
to change the default HTTP method.
The AbstractRestOperation
enables automatic HTTP Basic
authentication if the Credentials
are set in the Session
for
the calling URL. This behavior can be changed by overwriting
applyCredentials()
.
OPERATION_FAILED, OPERATION_SUCCESSFUL
Constructor and Description |
---|
AbstractRestOperation()
Create a GET operation
|
AbstractRestOperation(java.lang.String url)
Create a GET operation for the given URL
|
AbstractRestOperation(java.lang.String httpMethod,
java.lang.String url)
Create a REST operation for the given URL with the given REST method.
|
Modifier and Type | Method and Description |
---|---|
void |
addHeaderParameter(java.lang.String name,
java.lang.String value)
see
addHeaderParameter(String, String, boolean) where urlEncode is
set to false |
void |
addHeaderParameter(java.lang.String name,
java.lang.String[] values)
see
addHeaderParameter(String, String[], boolean) where urlEncode is
set to false |
void |
addHeaderParameter(java.lang.String name,
java.lang.String[] values,
boolean urlEncode)
Adds a header parameter with multiple values.
|
void |
addHeaderParameter(java.lang.String name,
java.lang.String value,
boolean urlEncode)
Adds a parameter to the HTTP header.
|
void |
addQueryParameter(java.lang.String key,
java.lang.String value)
see
addQueryParameter(String, String, boolean) where urlEncode is
set to false |
void |
addQueryParameter(java.lang.String name,
java.lang.String[] values)
see
addQueryParameter(String, String[], boolean) where urlEncode is
set to false |
void |
addQueryParameter(java.lang.String name,
java.lang.String[] values,
boolean urlEncode)
Adds a new query parameter with multiple values.
Delegates to addQueryParameter(String, String) . |
void |
addQueryParameter(java.lang.String key,
java.lang.String value,
boolean urlEncode)
Adds a query parameter with a single value.
|
void |
execute()
Executes this operation.
|
java.lang.String[] |
getHeader()
Returns the header parameters.
|
java.util.Hashtable |
getHeaderParameters()
Returns all header parameters used for the request.
|
java.lang.String |
getHTTPMethod()
Returns the HTTP method used for this operation.
|
com.softwareag.mobile.runtime.comms.HttpResponse |
getHttpResponse() |
byte[] |
getPostData()
Returns the set post data payload as a byte array.
|
java.util.Hashtable |
getQueryParameters()
Returns all query parameters used for the request.
|
java.lang.String |
getUrl()
Returns the used URL in combination with all query parameters.
|
boolean |
isExecuteAsynchronous() |
boolean |
isFollowingRedirects() |
void |
onResponse(com.softwareag.mobile.runtime.comms.HttpResponse response)
This method will be called when a response is available.
|
void |
reset()
Resets the request and it's properties to it's initial state.
|
void |
setExecuteAsynchronous(boolean async) |
void |
setFollowRedirects(boolean followRedirects) |
void |
setHttpMethod(java.lang.String httpMethod)
Sets the HTTP method used for this operation.
|
void |
setPostData(byte[] postData)
Sets the data if POST or PUT is required.
|
void |
setPostData(java.lang.String postData)
Sets the data if POST or PUT is required.
|
void |
setResponse(com.softwareag.mobile.runtime.comms.HttpResponse resp) |
void |
setUrl(java.lang.String url)
Sets the url.
This method sets only the URL and must not be used to set query parameters. |
java.lang.String |
toString() |
addOperationDelegate, getOperationDelegates, getResponse, removeOperationDelegate, setCacheHandler, setResponse
public AbstractRestOperation()
public AbstractRestOperation(java.lang.String url)
public AbstractRestOperation(java.lang.String httpMethod, java.lang.String url)
public void execute()
IOperation
execute
in interface IOperation
execute
in class AbstractSynchronizableOperation
public void setResponse(com.softwareag.mobile.runtime.comms.HttpResponse resp)
public com.softwareag.mobile.runtime.comms.HttpResponse getHttpResponse()
public void onResponse(com.softwareag.mobile.runtime.comms.HttpResponse response)
com.softwareag.mobile.runtime.comms.IConnectionCallback
onResponse
in interface com.softwareag.mobile.runtime.comms.IConnectionCallback
response
- - data received from server.public void reset()
public final void addQueryParameter(java.lang.String name, java.lang.String[] values, boolean urlEncode)
addQueryParameter(String, String)
.name
- of the parametervalues
- all values for this parameter, must not be nullurlEncode
- if true: the value will be URL-Encodedpublic final void addQueryParameter(java.lang.String name, java.lang.String[] values)
addQueryParameter(String, String[], boolean)
where urlEncode is
set to false
public final void addQueryParameter(java.lang.String key, java.lang.String value, boolean urlEncode)
http://host:port?key=value&key2=value
key
- the key of the parametervalue
- the value of the parameterurlEncode
- if true
: the value will be URL-Encodedpublic final void addQueryParameter(java.lang.String key, java.lang.String value)
addQueryParameter(String, String, boolean)
where urlEncode is
set to false
public java.util.Hashtable getQueryParameters()
public byte[] getPostData()
public void addHeaderParameter(java.lang.String name, java.lang.String[] values, boolean urlEncode)
addHeaderParameter(String, String)
.name
- the name of the parametervalues
- the values of the parameter; must not be null
urlEncode
- if true
: the values will be URL-EncodedaddHeaderParameter(String, String)
public void addHeaderParameter(java.lang.String name, java.lang.String[] values)
addHeaderParameter(String, String[], boolean)
where urlEncode is
set to false
public void addHeaderParameter(java.lang.String name, java.lang.String value, boolean urlEncode)
name
- the name of the parametervalue
- the value of the parameterurlEncode
- if true
: the value will be URL-Encodedpublic void addHeaderParameter(java.lang.String name, java.lang.String value)
addHeaderParameter(String, String, boolean)
where urlEncode is
set to false
public java.util.Hashtable getHeaderParameters()
public java.lang.String getUrl()
public void setUrl(java.lang.String url)
addQueryParameter(String, String)
.public java.lang.String[] getHeader()
public void setPostData(byte[] postData)
postData
- the data (as String) that should be sentpublic void setPostData(java.lang.String postData)
postData
- the data (as byte[]) that should be sentpublic java.lang.String getHTTPMethod()
setHttpMethod(String)
to change the HTTP method name.
Defaults to Connection.METHOD_GET
.
Supported types are (listed in Connection
):
Connection.METHOD_GET
Connection.METHOD_POST
Connection.METHOD_PUT
Connection.METHOD_DELETE
Connection.METHOD_HEAD
public void setHttpMethod(java.lang.String httpMethod)
getHTTPMethod()
.
Supported types are (listed in Connection
), see
getHTTPMethod()
for details.
public void setFollowRedirects(boolean followRedirects)
public boolean isFollowingRedirects()
public void setExecuteAsynchronous(boolean async)
public boolean isExecuteAsynchronous()
public java.lang.String toString()
toString
in class java.lang.Object