From 82e009ea741b4f508bd234166171f663af26fc80 Mon Sep 17 00:00:00 2001 From: "Simon J. Liu" Date: Thu, 21 Mar 2013 19:04:13 +1100 Subject: [PATCH 1/2] catch ConnectTimeoutException and send back an error message in makeRequestWithRetries --- src/com/loopj/android/http/AsyncHttpRequest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/loopj/android/http/AsyncHttpRequest.java b/src/com/loopj/android/http/AsyncHttpRequest.java index 9f4b19dc2..3aa3b5b2e 100644 --- a/src/com/loopj/android/http/AsyncHttpRequest.java +++ b/src/com/loopj/android/http/AsyncHttpRequest.java @@ -27,6 +27,7 @@ import org.apache.http.HttpResponse; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.impl.client.AbstractHttpClient; import org.apache.http.protocol.HttpContext; @@ -116,6 +117,11 @@ private void makeRequestWithRetries() throws ConnectException { responseHandler.sendFailureMessage(e, "socket time out"); } return; + } catch (ConnectTimeoutException e) { + if (responseHandler != null) { + responseHandler.sendFailureMessage(e, "connection time out"); + } + return; } catch (IOException e) { cause = e; retry = retryHandler.retryRequest(cause, ++executionCount, context); From 7d502a8737e1b68019b73fb6440fde21ba749bc1 Mon Sep 17 00:00:00 2001 From: "Simon J. Liu" Date: Fri, 12 Apr 2013 15:17:38 +1000 Subject: [PATCH 2/2] catch RuntimeException in AsyncHttpClient.get when create HttpGet object --- src/com/loopj/android/http/AsyncHttpClient.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/com/loopj/android/http/AsyncHttpClient.java b/src/com/loopj/android/http/AsyncHttpClient.java index 6053a5693..efdf13a2c 100644 --- a/src/com/loopj/android/http/AsyncHttpClient.java +++ b/src/com/loopj/android/http/AsyncHttpClient.java @@ -335,7 +335,14 @@ public void get(Context context, String url, AsyncHttpResponseHandler responseHa * @param responseHandler the response handler instance that should handle the response. */ public void get(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { - sendRequest(httpClient, httpContext, new HttpGet(getUrlWithQueryString(url, params)), null, responseHandler, context); + HttpGet httpGet; + try { + httpGet = new HttpGet(getUrlWithQueryString(url, params)); + } catch (RuntimeException e) { + responseHandler.sendFailureMessage(e, e.getMessage()); + return; + } + sendRequest(httpClient, httpContext, httpGet, null, responseHandler, context); } /**