X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Ffonbot%2FHttpCallExecutableRunnable.java;h=b54a7ba53affb7325f7c8d9c312cf703e3d1db51;hb=35ad85f01d2755a81575278714fc3b96a4d9a2a1;hp=34c5d8d8260265be43ee1e6edee0460d1accf95b;hpb=c33b4990b6f2471803b656d06e206b7a74457496;p=fonbot.git diff --git a/src/ro/ieval/fonbot/HttpCallExecutableRunnable.java b/src/ro/ieval/fonbot/HttpCallExecutableRunnable.java index 34c5d8d..b54a7ba 100644 --- a/src/ro/ieval/fonbot/HttpCallExecutableRunnable.java +++ b/src/ro/ieval/fonbot/HttpCallExecutableRunnable.java @@ -5,10 +5,10 @@ import static ro.ieval.fonbot.Utils.toNonNull; import java.io.InputStream; import java.io.OutputStream; -import java.net.HttpURLConnection; import java.net.URL; import java.util.Collection; +import javax.net.ssl.HttpsURLConnection; import org.eclipse.jdt.annotation.Nullable; import android.content.Context; @@ -38,11 +38,12 @@ import com.google.android.gcm.GCMRegistrar; */ /** - * ExecutableRunnable that makes a HTTP call to the server and hands the response to a callback + * ExecutableRunnable that makes a HTTPS call to the server and hands the response to a callback * * @author Marius Gavrilescu */ public final class HttpCallExecutableRunnable extends ExecutableRunnable{ + /** * Callback which is run after a HTTP call. * @@ -85,6 +86,8 @@ public final class HttpCallExecutableRunnable extends ExecutableRunnable{ * Callback to run after the request returns */ private final ResultCallback callback; + /** If true, the task should be retried if it fails */ + private final boolean mustRetryTask; /** * Constructs a SendHttpMessageAsyncTask which sends a binary message. @@ -93,13 +96,15 @@ public final class HttpCallExecutableRunnable extends ExecutableRunnable{ * @param headers the extra headers * @param context the context instance * @param resultCallback {@link ResultCallback} instance + * @param mustRetryTask true if this task should be retried if it fails * @param data the message to send */ - public HttpCallExecutableRunnable(final String path, final @Nullable Collection
headers, final Context context, final @Nullable ResultCallback resultCallback, final byte[] data){//NOPMD array is supposed to be immutable. + public HttpCallExecutableRunnable(final String path, final @Nullable Collection
headers, final Context context, final @Nullable ResultCallback resultCallback, final boolean mustRetryTask, final byte[] data){//NOPMD array is supposed to be immutable. this.path=path; this.headers=headers; this.context=context; this.callback=resultCallback; + this.mustRetryTask=mustRetryTask; this.data=data; } @@ -110,13 +115,15 @@ public final class HttpCallExecutableRunnable extends ExecutableRunnable{ * @param headers the extra headers * @param context the context instance * @param resultCallback {@link ResultCallback} instance + * @param mustRetryTask true if this task should be retried if it fails * @param message message to send */ - public HttpCallExecutableRunnable(final String path, final @Nullable Collection
headers, final Context context, final @Nullable ResultCallback resultCallback, final String... message){ + public HttpCallExecutableRunnable(final String path, final @Nullable Collection
headers, final Context context, final @Nullable ResultCallback resultCallback, final boolean mustRetryTask, final String... message){ this.path=path; this.headers=headers; this.context=context; this.callback=resultCallback; + this.mustRetryTask=mustRetryTask; if(message.length == 0) this.data=null;//NOPMD final field else @@ -127,7 +134,7 @@ public final class HttpCallExecutableRunnable extends ExecutableRunnable{ public void run() { try { final URL url=Utils.getServerURL(toNonNull(context),toNonNull(path)); - final HttpURLConnection conn=(HttpURLConnection) url.openConnection(); + final HttpsURLConnection conn=(HttpsURLConnection) url.openConnection(); if(data!=null){ conn.setDoOutput(true); conn.setFixedLengthStreamingMode(data.length); @@ -157,13 +164,15 @@ public final class HttpCallExecutableRunnable extends ExecutableRunnable{ if(message==null && callback != null) callback.onError(toNonNull(context.getString(no_response_returned_from_server))); else if(message != null && callback != null) - callback.onResult(conn.getResponseCode(), Utils.parseHttpMessage(message), + callback.onResult(conn.getResponseCode(), message, toNonNull(conn.getInputStream())); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); if(callback != null) callback.onError(toNonNull(context.getString(connection_error))); + if(mustRetryTask) + retry(); } } }