Estoy usando HttpClient 4.1.2. Establecer ConnectionTimeout y SocketTimeout en un valor nunca es efectivo.Java: HttpClient 4.1.2: ConnectionTimeout, los valores de SocketTimeout establecidos no son efectivos
código:
Long startTime = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 30);
HttpConnectionParams.setSoTimeout(params, 60);
HttpGet httpget = new HttpGet("http://localhost:8080/Test/ScteServer");
try {
startTime = System.currentTimeMillis();
HttpResponse response = httpClient.execute(httpget);
}
catch(SocketTimeoutException se) {
Long endTime = System.currentTimeMillis();
System.out.println("SocketTimeoutException :: time elapsed :: " + (endTime-startTime));
se.printStackTrace();
}
catch(ConnectTimeoutException cte) {
Long endTime = System.currentTimeMillis();
System.out.println("ConnectTimeoutException :: time elapsed :: " + (endTime-startTime));
cte.printStackTrace();
}
catch (ClientProtocolException e) {
e.printStackTrace();
}
catch (IOException e) {
Long endTime = System.currentTimeMillis();
System.out.println("IOException :: time elapsed :: " + (endTime-startTime));
e.printStackTrace();
}
Si el servidor no funciona, entonces el tiempo de espera de la conexión no es nunca antes de 400 ms cuando se tiene que el tiempo de espera en el ~ 30 ms como se ha configurado.
Igual es el caso para Socket Timeout, poner un reposo en doGet() durante 5000 ms arrojará un tiempo de espera de socket que nunca será de alrededor de 60 ms como se configuró. Lleva más de 500 ms.
¿Alguien puede sugerir cómo configurar HttpClient 4.1.2 para que se agote el tiempo configurado?
Lanza '' java.lang.UnsupportedOperationException' – Niklas
httpclient.getParams() 'está obsoleta desde 4.3 – oleh