J'ai besoin de définir un délai pour les requêtes Http que nous faisons à un service (pas un service web). Nous utilisons le client HTTP Apache. J'ai ajouté ces deux lignes de code pour définir le délai d'attente sur la requête et la réponse au service.
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
1) Actuellement, j'ai fixé le délai d'attente à 10 secondes, car la réponse du service est presque instantanée. Dois-je augmenter ou réduire le délai ?
2) Que se passe-t-il lorsque la réponse prend plus de 10 secondes ? Lancera-t-il une exception et de quelle exception s'agira-t-il ? Y a-t-il quelque chose d'autre que je doive ajouter pour définir le délai dans le code ci-dessous.
public HashMap<String, Object> getJSONData(String url) throw Exception{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
HttpHost proxy = new HttpHost(getProxy(), getProxyPort());
ConnRouteParams.setDefaultProxy(params, proxy);
URI uri;
InputStream data = null;
try {
uri = new URI(url);
HttpGet method = new HttpGet(uri);
HttpResponse response = httpClient.execute(method);
data = response.getEntity().getContent();
}
catch (Exception e) {
e.printStackTrace();
}
Reader r = new InputStreamReader(data);
HashMap<String, Object> jsonObj = (HashMap<String, Object>) GenericJSONUtil.fromJson(r);
return jsonObj;
}