Je suis confronté à un problème étrange depuis que je teste mes applications sur ICS.
L'utilisation du code suivant sur Android 2.X fonctionne bien (il arrive que des timeouts se produisent mais très peu de fois) :
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParameters, SOCKET_TIMEOUT);
final DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
// Create a new HttpClient and Post Header
HttpPost httpPost = new HttpPost(url);
HttpResponse response = null;
try {
if (keys != null) {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
}
// Cookies
// Create a local instance of cookie store
if (checkCookieValues()) {
BasicClientCookie cookieSession = new BasicClientCookie(mCookieName, mCookieValue);
cookieSession.setDomain(mCookieDomain);
httpClient.getCookieStore().clear();
httpClient.getCookieStore().addCookie(cookieSession);
}
// Execute HTTP Post Request
response = httpClient.execute(httpPost);
httpClient.getConnectionManager().shutdown();
} catch (UnknownHostException e) {
Log.e(TAG, "Error when calling postData", e);
} catch (SocketTimeoutException e) {
Log.e(TAG, "Error when calling postData", e);
} catch (ClientProtocolException e) {
Log.e(TAG, "Error when calling postData", e);
} catch (SocketException e) {
Log.e(TAG, "Error when calling postData", e);
} catch (IOException e) {
Log.e(TAG, "Error when calling postData", e);
}
return response;
Sur ICS, dès que je reçois une exception de dépassement de délai, tous les appels suivants renverront une exception de dépassement de délai.
Timeout exception received :
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): org.apache.http.conn.ConnectTimeoutException: Connect to /78.109.91.193:80 timed out
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at com.kreactive.planningtv.service.PlanningTVService.postData(PlanningTVService.java:1554)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at com.kreactive.planningtv.service.PlanningTVService.fbConnect(PlanningTVService.java:1897)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at com.kreactive.planningtv.service.PlanningTVService.onHandleIntent(PlanningTVService.java:569)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at android.os.Looper.loop(Looper.java:137)
02-06 19:06:05.425: E/PLTV:PlanningTVService(2980): at android.os.HandlerThread.run(HandlerThread.java:60)
Quelqu'un a-t-il rencontré ce problème ? Existe-t-il un moyen d'éviter ce problème ? J'ai vérifié et je n'ai pas trouvé de question similaire (pour ICS surtout).
Merci pour vos réponses !