Título: Controlar TimeOut en conexión Publicado por: imaginawireless en 19 Febrero 2012, 02:09 am Hola gente. A ver si alguine puede echarme un cable. Tengo este código para comprobar la respuesta http de una URL...
Citar public int compRespUrl(String direcUrl) throws IOException { try{ URL url = new URL(direcUrl); int responseCode = ((HttpURLConnection) url.openConnection()).getResponseCode(); return responseCode; }catch(Exception e){ System.out.println(e); return 0; } El problema es que cuando la URL no está disponible, me tarda mucho en dar Time Out. ¿Como puedo controla el tiempo máximo de conexión? Gracias. Título: Re: Controlar TimeOut en conexión Publicado por: RyogiShiki en 19 Febrero 2012, 02:23 am Necesitas abrir la conexión a través de URLConnection (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html)[Ejemplos (http://docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html)] Y usar el método setConnectTimeout() (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setConnectTimeout%28int%29)
Saludos Título: Re: Controlar TimeOut en conexión Publicado por: imaginawireless en 19 Febrero 2012, 13:38 pm Pero el problema es que con "URLConnection", no tengo el método "getResponseCode()". He buscado en el doc, pero ne veo ningún método que me devuelva la respuesta si no es usando "HttpURLConnection".
Solo se me ocurre esto tal como me has dicho, pero me da una excepción y no encuentro como solucionarla. Citar public int compRespUrl(String direcUrl) throws IOException { try{ URL url = new URL(direcUrl); int espera=3000; int responseCode = (((HttpURLConnection) url.openConnection()).setConnectTimeout(espera)).getResponseCode(); return responseCode; }catch(Exception e){ return 0; } } Título: Re: Controlar TimeOut en conexión Publicado por: imaginawireless en 21 Febrero 2012, 13:09 pm Vale chicos, la cosa quedó así y funciona perfectamente.
Gracias "RyogiShiki" Citar public int compRespUrl(String direcUrl) throws IOException { try{ HttpURLConnection con = (HttpURLConnection) new URL(direcUrl).openConnection(); con.setConnectTimeout(5000); //establecemos timeout a 5 segundos return con.getResponseCode(); /*tambien podemos recoger la respuesta en un String */return (con.getResponseCode() == HttpURLConnection.HTTP_OK); }catch (java.net.SocketTimeoutException e){ System.out.println(e); return 0; }catch (java.io.IOException i){ System.out.println(i); return 0; } } Título: Re: Controlar TimeOut en conexión Publicado por: RyogiShiki en 23 Febrero 2012, 04:41 am Bien, me alegra que te haya servido.
Saludos |