Utilizando Apache HttpClient cómo configurar el TIMEOUT en una solicitud y respuesta
Necesito establecer un tiempo de espera para la solicitud Http que hacemos a un servicio (no a un servicio web). Estamos utilizando Apache HTTP Client. He agregado estas 2 líneas de código para establecer el tiempo de espera por solicitud y respuesta al servicio.
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
1) Actualmente configuré 10 segundos como tiempo de espera, ya que veo que la respuesta proviene del servicio casi instantáneamente. ¿Debo aumentar o disminuir el tiempo?
2) ¿Qué sucederá cuando la respuesta se demore más de 10 segundos? ¿Lanzará una excepción y qué excepción será? ¿Hay algo más que deba agregar para configurar el tiempo de espera en el siguiente código?
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;
}