Class ConnectionRequest
- All Implemented Interfaces:
IOProgressListener
- Direct Known Subclasses:
AdsService, CachedDataService, GZConnectionRequest, ImageDownloadService, MultipartRequest, RSSService, TwitterRESTService
This class represents a connection object in the form of a request response
typically common for HTTP/HTTPS connections. A connection request is added to
the com.codename1.io.NetworkManager for processing in a queue on one of the
network threads. You can read more about networking in Codename One here
The sample code below fetches a page of data from the nestoria housing listing API.
You can see instructions on how to display the data in the com.codename1.components.InfiniteScrollAdapter
class. You can read more about networking in Codename One here.
int pageNumber = 1;
java.util.List> fetchPropertyData(String text) {
try {
ConnectionRequest r = new ConnectionRequest();
r.setPost(false);
r.setUrl("http://api.nestoria.co.uk/api");
r.addArgument("pretty", "0");
r.addArgument("action", "search_listings");
r.addArgument("encoding", "json");
r.addArgument("listing_type", "buy");
r.addArgument("page", "" + pageNumber);
pageNumber++;
r.addArgument("country", "uk");
r.addArgument("place_name", text);
NetworkManager.getInstance().addToQueueAndWait(r);
Map result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(r.getResponseData()), "UTF-8"));
Map response = (Map)result.get("response");
return (java.util.List>)response.get("listings");
} catch(Exception err) {
Log.e(err);
return null;
}
}
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumThere are 5 caching modes:static final classEncapsulates an SSL certificate fingerprint. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final byteA critical priority request will "push" through the queue to the highest point regardless of anything else and ignoring anything that is not in itself of critical priority.static final byteA high priority request is the second highest level, it will act exactly like a critical priority with one difference.static final byteLow priority requests are mostly background tasks that should still be accomplished thoughstatic final byteNormal priority executes as usual on the queuestatic final byteRedundant elements can be discarded from the queue when paused -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructorConnectionRequest(String url) Construct a connection request to a urlConnectionRequest(String url, boolean post) Construct a connection request to a url -
Method Summary
Modifier and TypeMethodDescriptionvoidaddArgument(String key, byte[] value) Add an argument to the request responsevoidaddArgument(String key, String value) Add an argument to the request responsevoidaddArgument(String key, String[] value) Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same keyvoidaddArgumentArray(String key, String... value) Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same keyvoidaddArgumentNoEncoding(String key, String value) Add an argument to the request response without encoding it, this is useful for arguments which are already encodedvoidaddArgumentNoEncoding(String key, String[] value) Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same key, notice that this doesn't implicitly encode the valuevoidaddArgumentNoEncodingArray(String key, String... value) Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same key, notice that this doesn't implicitly encode the valuevoidaddArguments(String key, String... value) Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same keyvoidAdds a listener that would be notified on the CodenameOne thread of an exception in this connection requestvoidaddRequestHeader(String key, String value) Adds the given header to the request that will be sentvoidAdds a listener that would be notified on the CodenameOne thread of a response code that is not a 200 (OK) or 301/2 (redirect) response code.voidAdds a listener that would be notified on the CodenameOne thread of a response from the server.protected voidInvoked when send body is true, by default sends the request arguments based on "POST" conventionsprotected voidThis callback is invoked on a 304 server response indicating the data in the server matches the result we currently have in the cache.booleanChecks to see if the platform supports getting SSL certificates.protected voidcheckSSLCertificates(ConnectionRequest.SSLCertificate[] certificates) A callback that can be overridden by subclasses to check the SSL certificates for the server, and kill the connection if they don't pass muster.protected voidCallback invoked for every cookie received from the serverprotected voidcookieSent(Cookie c) Callback invoked for every cookie being sent to the serverprotected StringCreates the request URL mostly for a get requestDownloads an image to the file system asynchronously returning an AsyncResource object that resolves to the loaded image..downloadImageToFileSystem(String file, boolean useCache) Downloads an image to a the file system asynchronously returning an AsyncResource object that resolves to the loaded image..voiddownloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image.voiddownloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess, boolean useCache) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image.voiddownloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image.voiddownloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail, boolean useCache) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image.downloadImageToStorage(String storageFile) Downloads an image to a specified storage file asynchronously returning an AsyncResource that resolves to the resulting image..downloadImageToStorage(String storageFile, boolean useCache) Downloads an image to a specified storage file asynchronously returning an AsyncResource that resolves to the resulting image..voiddownloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image.voiddownloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess, boolean useCache) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image.voiddownloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image.voiddownloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail, boolean useCache) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image.booleanUtility method that returns a JSON structure or throws an IOException in case of a failure.static AsyncResource<Map<String, Object>> fetchJSONAsync(String url) Fetches JSON asynchronously.protected voidFires the response event to the listeners on this connectionprotected InputStreamThis method should be overriden inCacheMode.MANUALto provide offline caching.There are 5 caching modes:intReturns the content length header valueReturns
static StringWorkaround for https://bugs.php.net/bug.php?id=65633 allowing developers to customize the name of the cookie header to CookieThe default value for the cacheMode property see#getCacheMode()static StringReturns
When set to a none null string saves the response to file system under this file nameWhen set to a none null string saves the response to storage under this file nameA dialog that will be seamlessly disposed once the given request has been completedprotected StringReturns the HTTP header field for the given connection, this method is only guaranteed to work when invoked from the readHeaders method.protected String[]getHeaderFieldNames(Object connection) Returns the HTTP header field names for the given connection, this method is only guaranteed to work when invoked from the readHeaders method.protected String[]getHeaders(Object connection, String header) Returns the HTTP header field for the given connection, this method is only guaranteed to work when invoked from the readHeaders method.Returns the http methodbyteThe priority of this connection based on the constants in this classintGets the read timeout for this connection.The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have argumentsThe request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have argumentsintReturns the response code for this request, this is only relevant after the request completed and might contain a temporary (e.g. redirect) code while the request is in progressReturns the content type from the response headersbyte[]This method will return a valid value for only some of the responses and only after the response was processedReturns error message associated with an error response codeintReturns the response code for this request, this is only relevant after the request completed and might contain a temporary (e.g. redirect) code while the request is in progressThis dialog will be shown when this request enters the network queueintIndicates the number of times to silently retry a connection that failed before promptingGets the server's SSL certificates for this requests.intIndicates the timeout for this connection requestgetUrl()Returns
Returns
protected intgetYield()Returns the amount of time to yield for other processes, this is an implicit method that automatically generates values for lower priority connectionsprotected voidhandleErrorResponseCode(int code, String message) Handles a server response code that is not 200 and not a redirect (unless redirect handling is disabled)protected voidhandleException(Exception err) Handles an exception thrown when performing a network operation, the default implementation shows a retry dialog.protected voidHandles IOException thrown when performing a network operationprotected voidHandles an exception thrown when performing a network operationinthashCode()protected booleanReturns true if someone is listening to action response events, this is useful so we can decide whether to bother collecting data for an event in some cases since building the event object might be memory/CPU intensive.protected voidinitConnection(Object connection) Invoked to initialize HTTP headers, cookies etc.protected StringinitCookieHeader(String cookie) Allows subclasses to inject cookies into the requestvoidioStreamUpdate(Object source, int bytes) Indicates the number of bytes that were read/written to/from the source streambooleanReturns
booleanReturns
static booleanReturns
static booleanEnables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirectsbooleanIndicates whether this connection request supports duplicate entries in the request queuebooleanIndicates that we are uninterested in error handlingbooleanEnables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirectsstatic booleanWhen set to true (the default), the global error handler inNetworkManagershould receive errors for response code as wellbooleanChecks if the request is insecure (default false).protected booleanisKilled()Returns
static booleanChecks if the platform supports sharing cookies between the native components (e.g. BrowserComponent) and ConnectionRequests.protected booleanReturn true from this method if this connection can be paused and resumed later on.protected booleanisPaused()Returns
booleanisPost()Returns true for a post operation and false for a get operationbooleanReturns
booleanWhen set to true the read response code will happen even for error codes such as 400 and 500static booleanDetermines the default value for#isReadResponseForErrors()static booleanChecks if this platform supports read timeouts.booleanReturns true if this request is been redirected to a different urlbooleanReturns
voidkill()Kills this request if possiblebooleanonRedirect(String url) This is a callback method that been called when there is a redirect.booleanpause()Invoked to pause this opeation, this method will only be invoked if isPausable() returns true (its false by default).protected voidA callback method that's invoked on the EDT after the readResponse() method has finished, this is the place where developers should change their Codename One user interface to avoid race conditions that might be triggered by modifications within readResponse.voidDeletes the cache file if it exists, notice that this will not work for download filesstatic voidPurges all locally cached filesprotected voidreadErrorCodeHeaders(Object connection) Allows reading the headers from the connection by calling the getHeader() method when a response that isn't 200 OK is sent.protected voidreadHeaders(Object connection) Allows reading the headers from the connection by calling the getHeader() method.protected voidreadResponse(InputStream input) Callback for the server response with the input stream from the server.voidRemoves all argumentsvoidremoveArgument(String key) Removes the given argument from the requestvoidRemoves the given listenervoidRemoves the given listenervoidRemoves the given listenerbooleanresume()Called when a previously paused operation now has the networking time to resume.voidretry()Retry the current operation in case of an exceptionvoidsetCacheMode(ConnectionRequest.CachingMode cacheMode) There are 5 caching modes:voidsetCheckSSLCertificates(boolean checkSSLCertificates) Parameters
voidsetChunkedStreamingMode(int chunklen) This method is used to enable streaming of a HTTP request body without internal buffering, when the content length is not known in advance.voidsetContentType(String contentType) Parameters
static voidsetCookieHeader(String aCookieHeader) Workaround for https://bugs.php.net/bug.php?id=65633 allowing developers to customize the name of the cookie header to CookievoidsetCookiesEnabled(boolean cookiesEnabled) Parameters
static voidsetCookiesEnabledDefault(boolean aCookiesEnabledDefault) Parameters
static voidsetDefaultCacheMode(ConnectionRequest.CachingMode aDefaultCacheMode) The default value for the cacheMode property see#getCacheMode()static voidsetDefaultFollowRedirects(boolean aDefaultFollowRedirects) Enables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirectsstatic voidsetDefaultUserAgent(String aDefaultUserAgent) Parameters
voidsetDestinationFile(String destinationFile) When set to a none null string saves the response to file system under this file namevoidsetDestinationStorage(String destinationStorage) When set to a none null string saves the response to storage under this file namevoidsetDisposeOnCompletion(Dialog disposeOnCompletion) A dialog that will be seamlessly disposed once the given request has been completedvoidsetDuplicateSupported(boolean duplicateSupported) Indicates whether this connection request supports duplicate entries in the request queuevoidsetFailSilently(boolean failSilently) Indicates that we are uninterested in error handlingvoidsetFollowRedirects(boolean followRedirects) Enables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirectsstatic voidsetHandleErrorCodesInGlobalErrorHandler(boolean aHandleErrorCodesInGlobalErrorHandler) When set to true (the default), the global error handler inNetworkManagershould receive errors for response code as wellvoidsetHttpMethod(String httpMethod) Sets the http method for the requestvoidsetInsecure(boolean insecure) Turns off checking to make sure that SSL certificate is valid.protected voidsetKilled(boolean killed) Parameters
protected voidsetPaused(boolean paused) Parameters
voidsetPost(boolean post) Set to true for a post operation and false for a get operation, this will implicitly set the method to post/get respectively (which you can change back by setting the method).voidsetPriority(byte priority) The priority of this connection based on the constants in this classvoidsetReadRequest(boolean readRequest) Parameters
voidsetReadResponseForErrors(boolean readResponseForErrors) When set to true the read response code will happen even for error codes such as 400 and 500static voidsetReadResponseForErrorsDefault(boolean aReadResponseForErrorsDefault) Determines the default value for#setReadResponseForErrors(boolean)voidsetReadTimeout(int timeout) Sets the read timeout for the connection.voidsetRequestBody(Data data) The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have arguments.voidsetRequestBody(String requestBody) The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have arguments.voidsetShowOnInit(Dialog showOnInit) This dialog will be shown when this request enters the network queuevoidsetSilentRetryCount(int silentRetryCount) Indicates the number of times to silently retry a connection that failed before promptingvoidsetTimeout(int timeout) Indicates the timeout for this connection requestvoidParameters
static voidsetUseNativeCookieStore(boolean b) Indicates whether the native Cookie stores should be usedvoidsetUserAgent(String userAgent) Parameters
voidsetWriteRequest(boolean writeRequest) Parameters
protected booleanIndicates whether the response stream should be closed automatically by the framework (defaults to true), this might cause an issue if the stream needs to be passed to a separate thread for reading.protected booleanThis mimics the behavior of browsers that convert post operations to get operations when redirecting a request.protected booleanReturns true if the request is paused or killed, developers should call this method periodically to test whether they should quit the current IO operation immediatelyprotected booleanReturns whether when writing a post body the platform expects something in the form of string.getBytes("UTF-8") or new OutputStreamWriter(os, "UTF-8").protected voidvalidate()Validates that the request has the required information before being added to the queue e.g.
-
Field Details
-
PRIORITY_CRITICAL
public static final byte PRIORITY_CRITICALA critical priority request will "push" through the queue to the highest point regardless of anything else and ignoring anything that is not in itself of critical priority. A critical priority will stop any none critical connection in progress- See Also:
-
PRIORITY_HIGH
public static final byte PRIORITY_HIGHA high priority request is the second highest level, it will act exactly like a critical priority with one difference. It doesn't block another incoming high priority request. E.g. if a high priority request- See Also:
-
PRIORITY_NORMAL
public static final byte PRIORITY_NORMALNormal priority executes as usual on the queue- See Also:
-
PRIORITY_LOW
public static final byte PRIORITY_LOWLow priority requests are mostly background tasks that should still be accomplished though- See Also:
-
PRIORITY_REDUNDANT
public static final byte PRIORITY_REDUNDANTRedundant elements can be discarded from the queue when paused- See Also:
-
-
Constructor Details
-
ConnectionRequest
public ConnectionRequest()Default constructor -
ConnectionRequest
Construct a connection request to a url
Parameters
url: the url
-
ConnectionRequest
Construct a connection request to a url
Parameters
-
url: the url -
post: whether the request is a post url or a get URL
-
-
-
Method Details
-
getDefaultCacheMode
The default value for the cacheMode property see
#getCacheMode()Returns
the defaultCacheMode
-
setDefaultCacheMode
The default value for the cacheMode property see
#getCacheMode()Parameters
aDefaultCacheMode: the defaultCacheMode to set
-
isReadResponseForErrorsDefault
public static boolean isReadResponseForErrorsDefault()Determines the default value for
#isReadResponseForErrors()Returns
the readResponseForErrorsDefault
-
setReadResponseForErrorsDefault
public static void setReadResponseForErrorsDefault(boolean aReadResponseForErrorsDefault) Determines the default value for
#setReadResponseForErrors(boolean)Parameters
aReadResponseForErrorsDefault: the readResponseForErrorsDefault to set
-
isHandleErrorCodesInGlobalErrorHandler
public static boolean isHandleErrorCodesInGlobalErrorHandler()When set to true (the default), the global error handler in
NetworkManagershould receive errors for response code as wellReturns
the handleErrorCodesInGlobalErrorHandler
-
setHandleErrorCodesInGlobalErrorHandler
public static void setHandleErrorCodesInGlobalErrorHandler(boolean aHandleErrorCodesInGlobalErrorHandler) When set to true (the default), the global error handler in
NetworkManagershould receive errors for response code as wellParameters
aHandleErrorCodesInGlobalErrorHandler: the handleErrorCodesInGlobalErrorHandler to set
-
getCookieHeader
Workaround for https://bugs.php.net/bug.php?id=65633 allowing developers to customize the name of the cookie header to Cookie
Returns
the cookieHeader
-
setCookieHeader
Workaround for https://bugs.php.net/bug.php?id=65633 allowing developers to customize the name of the cookie header to Cookie
Parameters
aCookieHeader: the cookieHeader to set
-
isCookiesEnabledDefault
public static boolean isCookiesEnabledDefault()Returns
the cookiesEnabledDefault
-
setCookiesEnabledDefault
public static void setCookiesEnabledDefault(boolean aCookiesEnabledDefault) Parameters
aCookiesEnabledDefault: the cookiesEnabledDefault to set
-
isDefaultFollowRedirects
public static boolean isDefaultFollowRedirects()Enables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirects
Returns
the defaultFollowRedirects
-
setDefaultFollowRedirects
public static void setDefaultFollowRedirects(boolean aDefaultFollowRedirects) Enables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirects
Parameters
aDefaultFollowRedirects: the defaultFollowRedirects to set
-
isReadTimeoutSupported
public static boolean isReadTimeoutSupported()Checks if this platform supports read timeouts.
Returns
True if this connection supports read timeouts;
Since
7.0
-
purgeCacheDirectory
Purges all locally cached files- Throws:
IOException
-
getDefaultUserAgent
Returns
the defaultUserAgent
-
setDefaultUserAgent
Parameters
aDefaultUserAgent: the defaultUserAgent to set
-
setUseNativeCookieStore
public static void setUseNativeCookieStore(boolean b) Indicates whether the native Cookie stores should be used
NOTE: If the platform doesn't support Native Cookie sharing, then this method will have no effect. Use
#isNativeCookieSharingSupported()} to check if the platform supports native cookie sharing at runtime.Parameters
b: true to enable native cookie stores when applicable
-
isNativeCookieSharingSupported
public static boolean isNativeCookieSharingSupported()Checks if the platform supports sharing cookies between the native components (e.g. BrowserComponent) and ConnectionRequests. Currently only iOS and Android support this.
If the platform does not support native cookie sharing, then methods like
#setUseNativeCookieStore(boolean)will have no effect.Returns
true if the platform supports native cookie sharing.
Since
8.0
-
fetchJSON
Utility method that returns a JSON structure or throws an IOException in case of a failure. This method blocks the EDT legally and can be used synchronously. Notice that this method assumes all JSON data is UTF-8
Parameters
url: the URL hosing the JSON
Returns
map data
Throws
IOException: in case of an error
- Throws:
IOException
-
fetchJSONAsync
Fetches JSON asynchronously.
Parameters
url: The URL to fetch.
Returns
AsyncResource that will resolve with either an exception or the parsed JSON data.
Since
7.0
-
getCacheMode
There are 5 caching modes:
-
OFFis the default, meaning no caching. -
SMARTmeans all get requests are cached intelligently and caching is "mostly" seamless. -
MANUALmeans that the developer is responsible for the actual caching but the system will not do a request on a resource that's already "fresh". -
OFFLINEwill fetch data from the cache and wont try to go to the server. It will generate a 404 error if data isn't available. -
OFFLINE_FIRSTworks the same way as offline but if data isn't available locally it will try to connect to the server.
Returns
the cacheMode
-
-
setCacheMode
There are 5 caching modes:
-
OFFis the default, meaning no caching. -
SMARTmeans all get requests are cached intelligently and caching is "mostly" seamless. -
MANUALmeans that the developer is responsible for the actual caching but the system will not do a request on a resource that's already "fresh". -
OFFLINEwill fetch data from the cache and wont try to go to the server. It will generate a 404 error if data isn't available. -
OFFLINE_FIRSTworks the same way as offline but if data isn't available locally it will try to connect to the server.
Parameters
cacheMode: the cacheMode to set
-
-
isCheckSSLCertificates
public boolean isCheckSSLCertificates()Returns
the checkSSLCertificates
-
setCheckSSLCertificates
public void setCheckSSLCertificates(boolean checkSSLCertificates) Parameters
checkSSLCertificates: the checkSSLCertificates to set
-
isInsecure
public boolean isInsecure()Checks if the request is insecure (default false).
Returns
True if the request is insecure, i.e. does not check SSL certificate for validity.
Since
7.0
-
setInsecure
public void setInsecure(boolean insecure) Turns off checking to make sure that SSL certificate is valid.
Parameters
insecure
Since
7.0
-
getResponseData
public byte[] getResponseData()This method will return a valid value for only some of the responses and only after the response was processed
Returns
null or the actual data returned
-
getHttpMethod
Returns the http method
Returns
the http method of the request
-
setHttpMethod
Sets the http method for the request
Parameters
httpMethod: the http method string
-
addRequestHeader
-
checkSSLCertificates
A callback that can be overridden by subclasses to check the SSL certificates for the server, and kill the connection if they don't pass muster. This can be used for SSL pinning.
NOTE: This method will only be called if
#isCheckSSLCertificates()is true and the platform supports SSL certificates (#canGetSSLCertificates().WARNING: On iOS it is possible that certificates for a request would not be available even through the platform supports it, and checking certificates are enabled. This could happen if the certificates had been cached by the TLS cache by some network mechanism other than ConnectionRequest (e.g. native code, websockets, etc..). In such cases this method would receive an empty array as a parameter.
This is called after the SSL handshake, but before any data has been sent.
Parameters
certificates: The server's SSL certificates.
See also
-
#setCheckSSLCertificates(boolean)
-
#isCheckSSLCertificates()
-
getReadTimeout
public int getReadTimeout()Gets the read timeout for this connection. This is only used if
#isReadTimeoutSupported()is true on this platform. Currently Android, Mac Desktop, Windows Desktop, and Simulator supports read timeouts.Returns
The read timeout.
Since
7.0
-
setReadTimeout
public void setReadTimeout(int timeout) Sets the read timeout for the connection. This is only used if
#isReadTimeoutSupported()is true on this platform. Currently Android, Mac Desktop, Windows Desktop, and Simulator supports read timeouts.Parameters
timeout: The read timeout. If less than or equal to zero, then there is no timeout.
See also
- #isReadTimeoutSupported()
-
initConnection
Invoked to initialize HTTP headers, cookies etc.
Parameters
connection: the connection object
-
getCachedData
This method should be overriden in
CacheMode.MANUALto provide offline caching. The default implementation will work as expected in theCacheMode.SMARTandCacheMode.OFFLINE_FIRSTmodes.Returns
the offline cached data or null/exception if unavailable
- Throws:
IOException
-
purgeCache
public void purgeCache()Deletes the cache file if it exists, notice that this will not work for download files -
cacheUnmodified
This callback is invoked on a 304 server response indicating the data in the server matches the result we currently have in the cache. This method can be overriden to detect this case- Throws:
IOException
-
cookieReceived
Callback invoked for every cookie received from the server
Parameters
c: the cookie
-
cookieSent
Callback invoked for every cookie being sent to the server
Parameters
c: the cookie
-
initCookieHeader
-
getResponseCode
public int getResponseCode()Returns the response code for this request, this is only relevant after the request completed and might contain a temporary (e.g. redirect) code while the request is in progress
Returns
the response code
-
getResposeCode
public int getResposeCode()Returns the response code for this request, this is only relevant after the request completed and might contain a temporary (e.g. redirect) code while the request is in progress
Returns
the response code
Deprecated
misspelled method name please use getResponseCode
-
shouldConvertPostToGetOnRedirect
protected boolean shouldConvertPostToGetOnRedirect()This mimics the behavior of browsers that convert post operations to get operations when redirecting a request.
Returns
defaults to true, this case be modified by subclasses
-
readHeaders
Allows reading the headers from the connection by calling the getHeader() method.
Parameters
connection: used when invoking getHeader
Throws
java.io.IOException: thrown on failure
- Throws:
IOException
-
readErrorCodeHeaders
Allows reading the headers from the connection by calling the getHeader() method when a response that isn't 200 OK is sent.
Parameters
connection: used when invoking getHeader
Throws
java.io.IOException: thrown on failure
- Throws:
IOException
-
getHeader
Returns the HTTP header field for the given connection, this method is only guaranteed to work when invoked from the readHeaders method.
Parameters
-
connection: the connection to the network -
header: the name of the header
Returns
the value of the header
Throws
java.io.IOException: thrown on failure
- Throws:
IOException
-
-
getHeaders
Returns the HTTP header field for the given connection, this method is only guaranteed to work when invoked from the readHeaders method. Unlike the getHeader method this version works when the same header name is declared multiple times.
Parameters
-
connection: the connection to the network -
header: the name of the header
Returns
the value of the header
Throws
java.io.IOException: thrown on failure
- Throws:
IOException
-
-
getHeaderFieldNames
Returns the HTTP header field names for the given connection, this method is only guaranteed to work when invoked from the readHeaders method.
Parameters
connection: the connection to the network
Returns
the names of the headers
Throws
java.io.IOException: thrown on failure
- Throws:
IOException
-
getYield
protected int getYield()Returns the amount of time to yield for other processes, this is an implicit method that automatically generates values for lower priority connections
Returns
yield duration or -1 for no yield
-
shouldAutoCloseResponse
protected boolean shouldAutoCloseResponse()Indicates whether the response stream should be closed automatically by the framework (defaults to true), this might cause an issue if the stream needs to be passed to a separate thread for reading.
Returns
true to close the response stream automatically.
-
handleIOException
Handles IOException thrown when performing a network operation
Parameters
err: the exception thrown
-
handleRuntimeException
Handles an exception thrown when performing a network operation
Parameters
err: the exception thrown
-
handleException
Handles an exception thrown when performing a network operation, the default implementation shows a retry dialog.
Parameters
err: the exception thrown
-
canGetSSLCertificates
public boolean canGetSSLCertificates()Checks to see if the platform supports getting SSL certificates.
Returns
True if the platform supports getting SSL certificates.
-
getSSLCertificates
Gets the server's SSL certificates for this requests. If this connection request does not have any certificates available, it returns an array of size 0.
Returns
The server's SSL certificates. If not available, an empty array.
- Throws:
IOException
-
handleErrorResponseCode
Handles a server response code that is not 200 and not a redirect (unless redirect handling is disabled)
Parameters
-
code: the response code from the server -
message: the response message from the server
-
-
retry
public void retry()Retry the current operation in case of an exception -
onRedirect
This is a callback method that been called when there is a redirect. IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirects
Parameters
url: the url to be redirected
Returns
true if the implementation would like to handle this by itself
-
readResponse
Callback for the server response with the input stream from the server. This method is invoked on the network thread
Parameters
input: the input stream containing the response
Throws
IOException: when a read input occurs
- Throws:
IOException
-
postResponse
protected void postResponse()A callback method that's invoked on the EDT after the readResponse() method has finished, this is the place where developers should change their Codename One user interface to avoid race conditions that might be triggered by modifications within readResponse. Notice this method is only invoked on a successful response and will not be invoked in case of a failure. -
createRequestURL
Creates the request URL mostly for a get request
Returns
the string of a request
-
buildRequestBody
Invoked when send body is true, by default sends the request arguments based on "POST" conventions
Parameters
os: output stream of the body
- Throws:
IOException
-
shouldWriteUTFAsGetBytes
protected boolean shouldWriteUTFAsGetBytes()Returns whether when writing a post body the platform expects something in the form of string.getBytes("UTF-8") or new OutputStreamWriter(os, "UTF-8"). -
kill
public void kill()Kills this request if possible -
shouldStop
protected boolean shouldStop()Returns true if the request is paused or killed, developers should call this method periodically to test whether they should quit the current IO operation immediately
Returns
true if the request is paused or killed
-
isPausable
protected boolean isPausable()Return true from this method if this connection can be paused and resumed later on. A pausable network operation receives a "pause" invocation and is expected to stop network operations as soon as possible. It will later on receive a resume() call and optionally start downloading again.
Returns
false by default.
-
pause
public boolean pause()Invoked to pause this opeation, this method will only be invoked if isPausable() returns true (its false by default). After this method is invoked current network operations should be stoped as soon as possible for this class.
Returns
- Returns:
- This method can return false to indicate that there is no need to resume this method since the operation has already been completed or made redundant
-
resume
public boolean resume()Called when a previously paused operation now has the networking time to resume. Assuming this method returns true, the network request will be resent to the server and the operation can resume.
Returns
- Returns:
- This method can return false to indicate that there is no need to resume this method since the operation has already been completed or made redundant
-
isPost
public boolean isPost()Returns true for a post operation and false for a get operation
Returns
the post
-
setPost
public void setPost(boolean post) Set to true for a post operation and false for a get operation, this will implicitly set the method to post/get respectively (which you can change back by setting the method). The main importance of this method is how arguments are added to the request (within the body or in the URL) and so it is important to invoke this method before any argument was added.
Throws
IllegalStateException: if invoked after an addArgument call
-
addArgument
Add an argument to the request response
Parameters
-
key: the key of the argument -
value: the value for the argument
Deprecated
use the version that accepts a string instead
-
-
removeArgument
Removes the given argument from the request
Parameters
key: the key of the argument no longer used
-
removeAllArguments
public void removeAllArguments()Removes all arguments -
addArgumentNoEncoding
-
addArgumentNoEncoding
Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same key, notice that this doesn't implicitly encode the value
Parameters
-
key: the key of the argument -
value: the value for the argument
-
-
addArgumentNoEncodingArray
Add an argument to the request response as an array of elements, this will trigger multiple request entries with the same key, notice that this doesn't implicitly encode the value
Parameters
-
key: the key of the argument -
value: the value for the argument
-
-
addArgument
-
addArgumentArray
-
addArgument
-
addArguments
-
getContentType
Returns
the contentType
-
setContentType
Parameters
contentType: the contentType to set
-
isWriteRequest
public boolean isWriteRequest()Returns
the writeRequest
-
setWriteRequest
public void setWriteRequest(boolean writeRequest) Parameters
writeRequest: the writeRequest to set
-
isReadRequest
public boolean isReadRequest()Returns
the readRequest
-
setReadRequest
public void setReadRequest(boolean readRequest) Parameters
readRequest: the readRequest to set
-
isPaused
protected boolean isPaused()Returns
the paused
-
setPaused
protected void setPaused(boolean paused) Parameters
paused: the paused to set
-
isKilled
protected boolean isKilled()Returns
the killed
-
setKilled
protected void setKilled(boolean killed) Parameters
killed: the killed to set
-
getPriority
public byte getPriority()The priority of this connection based on the constants in this class
Returns
the priority
-
setPriority
public void setPriority(byte priority) The priority of this connection based on the constants in this class
Parameters
priority: the priority to set
-
getUserAgent
Returns
the userAgent
-
setUserAgent
Parameters
userAgent: the userAgent to set
-
isFollowRedirects
public boolean isFollowRedirects()Enables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirects
Returns
the followRedirects
-
setFollowRedirects
public void setFollowRedirects(boolean followRedirects) Enables/Disables automatic redirects globally and returns the 302 error code, IMPORTANT this feature doesn't work on all platforms and currently doesn't work on iOS which always implicitly redirects
Parameters
followRedirects: the followRedirects to set
-
getTimeout
public int getTimeout()Indicates the timeout for this connection request
Returns
the timeout
-
setTimeout
public void setTimeout(int timeout) Indicates the timeout for this connection request
Parameters
timeout: the timeout to set
-
getContentLength
public int getContentLength()Returns the content length header value
Returns
the content length
-
ioStreamUpdate
Indicates the number of bytes that were read/written to/from the source stream
Parameters
-
source: the source stream which can be either an input stream or an output stream -
bytes: the number of bytes read or written
- Specified by:
ioStreamUpdatein interfaceIOProgressListener
-
-
getUrl
Returns
the url
-
setUrl
Parameters
url: the url to set
-
addResponseListener
Adds a listener that would be notified on the CodenameOne thread of a response from the server. This event is specific to the connection request type and its firing will change based on how the connection request is read/processed
Parameters
a: listener
-
removeResponseListener
Removes the given listener
Parameters
a: listener
-
addResponseCodeListener
Adds a listener that would be notified on the CodenameOne thread of a response code that is not a 200 (OK) or 301/2 (redirect) response code.
Parameters
a: listener
-
addExceptionListener
Adds a listener that would be notified on the CodenameOne thread of an exception in this connection request
Parameters
a: listener
-
removeResponseCodeListener
Removes the given listener
Parameters
a: listener
-
removeExceptionListener
Removes the given listener
Parameters
a: listener
-
hasResponseListeners
protected boolean hasResponseListeners()Returns true if someone is listening to action response events, this is useful so we can decide whether to bother collecting data for an event in some cases since building the event object might be memory/CPU intensive.
Returns
true or false
-
fireResponseListener
Fires the response event to the listeners on this connection
Parameters
ev: the event to fire
-
isDuplicateSupported
public boolean isDuplicateSupported()Indicates whether this connection request supports duplicate entries in the request queue
Returns
the duplicateSupported value
-
setDuplicateSupported
public void setDuplicateSupported(boolean duplicateSupported) Indicates whether this connection request supports duplicate entries in the request queue
Parameters
duplicateSupported: the duplicateSupported to set
-
hashCode
-
equals
-
validate
protected void validate()Validates that the request has the required information before being added to the queue e.g. checks if the URL is null. This method should throw an IllegalStateException for a case where one of the values required for this connection request is missing. This method can be overriden by subclasses to add additional tests. It is usefull to do tests here since the exception will be thrown immediately when invoking addToQueue which is more intuitive to debug than the alternative. -
getDisposeOnCompletion
A dialog that will be seamlessly disposed once the given request has been completed
Returns
the disposeOnCompletion
-
setDisposeOnCompletion
A dialog that will be seamlessly disposed once the given request has been completed
Parameters
disposeOnCompletion: the disposeOnCompletion to set
-
getShowOnInit
This dialog will be shown when this request enters the network queue
Returns
the showOnInit
-
setShowOnInit
This dialog will be shown when this request enters the network queue
Parameters
showOnInit: the showOnInit to set
-
getSilentRetryCount
public int getSilentRetryCount()Indicates the number of times to silently retry a connection that failed before prompting
Returns
the silentRetryCount
-
setSilentRetryCount
public void setSilentRetryCount(int silentRetryCount) Indicates the number of times to silently retry a connection that failed before prompting
Parameters
silentRetryCount: the silentRetryCount to set
-
isFailSilently
public boolean isFailSilently()Indicates that we are uninterested in error handling
Returns
the failSilently
-
setFailSilently
public void setFailSilently(boolean failSilently) Indicates that we are uninterested in error handling
Parameters
failSilently: the failSilently to set
-
isReadResponseForErrors
public boolean isReadResponseForErrors()When set to true the read response code will happen even for error codes such as 400 and 500
Returns
the readResponseForErrors
-
setReadResponseForErrors
public void setReadResponseForErrors(boolean readResponseForErrors) When set to true the read response code will happen even for error codes such as 400 and 500
Parameters
readResponseForErrors: the readResponseForErrors to set
-
getResponseContentType
Returns the content type from the response headers
Returns
the content type
-
isRedirecting
public boolean isRedirecting()Returns true if this request is been redirected to a different url
Returns
true if redirecting
-
getDestinationFile
When set to a none null string saves the response to file system under this file name
Returns
the destinationFile
-
setDestinationFile
When set to a none null string saves the response to file system under this file name
Parameters
destinationFile: the destinationFile to set
-
getDestinationStorage
When set to a none null string saves the response to storage under this file name
Returns
the destinationStorage
-
setDestinationStorage
When set to a none null string saves the response to storage under this file name
Parameters
destinationStorage: the destinationStorage to set
-
isCookiesEnabled
public boolean isCookiesEnabled()Returns
the cookiesEnabled
-
setCookiesEnabled
public void setCookiesEnabled(boolean cookiesEnabled) Parameters
cookiesEnabled: the cookiesEnabled to set
-
setChunkedStreamingMode
public void setChunkedStreamingMode(int chunklen) This method is used to enable streaming of a HTTP request body without internal buffering, when the content length is not known in advance. In this mode, chunked transfer encoding is used to send the request body. Note, not all HTTP servers support this mode. This mode is supported on Android and the Desktop ports.
Parameters
chunklen: @param chunklen The number of bytes to write in each chunk. If chunklen is zero a default value will be used.
-
downloadImageToStorage
public void downloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail, boolean useCache) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image. If useCache is true, then this will first try to load the image from Storage if it exists.
Parameters
-
storageFile: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded. -
onFail: Callback called if we fail to load the image. -
useCache: If true, then this will first check the storage to see if the image is already downloaded.
Since
3.4
-
-
downloadImageToStorage
Downloads an image to a specified storage file asynchronously returning an AsyncResource that resolves to the resulting image..
Parameters
storageFile: The storage file where the file should be saved.
Returns
AsyncResource that will resolve to the loaded image.
Since
7.0
-
downloadImageToStorage
Downloads an image to a specified storage file asynchronously returning an AsyncResource that resolves to the resulting image.. If useCache is true, then this will first try to load the image from Storage if it exists.
Parameters
-
storageFile: The storage file where the file should be saved. -
useCache: If true, then this will first check the storage to see if the image is already downloaded.
Returns
AsyncResource that will resolve to the loaded image.
Since
7.0
-
-
downloadImageToStorage
public void downloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess, boolean useCache) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image. If useCache is true, then this will first try to load the image from Storage if it exists.
Parameters
-
storageFile: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded. -
useCache: If true, then this will first check the storage to see if the image is already downloaded.
Since
3.4
-
-
downloadImageToStorage
Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image. This will first try to load the image from Storage if it exists.
Parameters
-
storageFile: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded.
Since
3.4
-
-
downloadImageToStorage
public void downloadImageToStorage(String storageFile, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail) Downloads an image to a specified storage file asynchronously and calls the onSuccessCallback with the resulting image. This will first try to load the image from Storage if it exists.
Parameters
-
storageFile: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded.
Since
3.4
-
-
downloadImageToFileSystem
Downloads an image to a the file system asynchronously returning an AsyncResource object that resolves to the loaded image.. If useCache is true, then this will first try to load the image from Storage if it exists.
Parameters
-
file: The storage file where the file should be saved. -
useCache: If true, then this will first check the storage to see if the image is already downloaded.
Returns
AsyncResource resolving to the downloaded image.
Since
7.0
-
-
downloadImageToFileSystem
Downloads an image to the file system asynchronously returning an AsyncResource object that resolves to the loaded image.. If useCache is true, then this will first try to load the image from Storage if it exists. This is a wrapper around
boolean)with true as the 2nd parameter.Parameters
file: The storage file where the file should be saved.
Returns
AsyncResource resolving to the downloaded image.
Since
7.0
-
downloadImageToFileSystem
public void downloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail, boolean useCache) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image. If useCache is true, then this will first try to load the image from Storage if it exists.
Parameters
-
file: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded. -
onFail: Callback called if we fail to load the image. -
useCache: If true, then this will first check the storage to see if the image is already downloaded.
Since
3.4
-
-
downloadImageToFileSystem
public void downloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess, boolean useCache) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image. If useCache is true, then this will first try to load the image from Storage if it exists.
Parameters
-
file: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded. -
useCache: If true, then this will first check the storage to see if the image is already downloaded.
Since
3.4
-
-
downloadImageToFileSystem
Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image. This will first try to load the image from Storage if it exists.
Parameters
-
file: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded.
Since
3.4
-
-
downloadImageToFileSystem
public void downloadImageToFileSystem(String file, SuccessCallback<Image> onSuccess, FailureCallback<Image> onFail) Downloads an image to a the file system asynchronously and calls the onSuccessCallback with the resulting image. This will first try to load the image from Storage if it exists.
Parameters
-
file: The storage file where the file should be saved. -
onSuccess: Callback called if the image is successfully loaded. -
onFail: Callback called if the image fails to load.
Since
3.4
-
-
getRequestBody
The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have arguments
Returns
the requestBody
-
setRequestBody
The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have arguments.
Notice that invoking this method blocks the
#buildRequestBody(java.io.OutputStream)method callback.Parameters
requestBody: a string to pass in the post body
-
setRequestBody
The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have arguments.
Notice that invoking this method blocks the
#buildRequestBody(java.io.OutputStream)method callback.Parameters
data: a data to pass in the post body
Since
7.0
-
getRequestBodyData
The request body can be used instead of arguments to pass JSON data to a restful request, it can't be used in a get request and will fail if you have arguments
Returns
the requestBody
Since
7.0
-
getResponseErrorMessage
Returns error message associated with an error response code
Returns
the system error message
-