J'écris une application qui se connecte à un service web et je ne veux pas qu'il attende trop longtemps s'il ne peut pas obtenir une connexion. Je définis donc la connectionTimeout des httpparams. Mais cela ne semble avoir aucun effet.Http connexion timeout sur Android ne fonctionne pas
Pour tester, j'éteins temporairement mon WLAN. L'application essaie de se connecter pendant un certain temps (bien plus que les 3 secondes que je veux), puis lance une UnknownHostException.
Voici mon code:
try{
HttpClient httpclient = new DefaultHttpClient();
HttpParams params = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 3000);
httppost = new HttpPost(URL);
StringEntity se = new StringEntity(envelope,HTTP.UTF_8);
httppost.setEntity(se);
//Code stops here until UnknownHostException is thrown.
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httppost);
HttpEntity entity = httpResponse.getEntity();
return entity;
}catch (Exception e){
e.printStackTrace();
}
Quelqu'un a des idées ce que je manqué?
Comment le système est-il informé du délai d'attente et quelle exception gérer? – vokilam
@VokilaM: Je viens d'éditer ma réponse. – Cristian
Je reçois toujours une UnknownHostException après 30+ secondes. Dans ce cas, l'appareil est connecté à un routeur wifi mais il n'y a pas d'accès internet. Toute idée de comment faire cet appel gérer cela? Sinon, je pourrais revenir à une minuterie externe ... :( – hooby3dfx