2012-06-15 16 views
5

Estoy tratando de obtener una imagen de Internet desde una URL en Java. Estoy usando el siguiente código.Java leyendo la imagen de la URL colgando

URL url = new URL(webAddress); 
image = ImageIO.read(url); 

a veces funciona ya veces simplemente se cuelga indefinidamente, dependiendo de lo que es webaddress. No hay mensaje de error, simplemente sigue funcionando y sin hacer nada.

Definitivamente hay imágenes en las direcciones donde se cuelga para siempre, como se confirmó al copiarlas y pegarlas en un navegador web. Parece que no hay un patrón para que funcionen y cuáles no; todos son jpegs. Hice algunas búsquedas y encontré otros métodos para obtener una imagen de una URL, pero sucede lo mismo con todas ellas: funcionan en algunas imágenes y se cuelgan en otras.

¿Tiene alguna idea de qué podría estar causando esto y cómo solucionarlo?

+1

¿Puede dar un ejemplo de URL en el que cuelga? – npe

Respuesta

5

Hmm No estoy seguro de probar esto y ver si se produce algún cambio o error. También creo que tal vez usted tiene setRedirects (boolean b) a esta falsa problemas también puede que dan pero trate de esta primera:

URLConnection con = null; 
    InputStream in = null; 
    try { 
     String webadd="urls go here try the two you have had probelms with and success"; 
     URL url = new URL(webadd); 

     con = url.openConnection(); 
     con.setConnectTimeout(10000); 
     con.setReadTimeout(10000); 
     in = con.getInputStream(); 
     Image img = ImageIO.read(in); 
     if (img != null) { 
      System.out.println("Loaded"); 
     } else { 
      System.out.println("Could not load"); 

     } 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } finally { 
     if(is != null) { 
      try { 
       is.close(); 
      } catch(IOException ex) { 
       // handle close failure 
      } 
     } 

     if(con != null) { 
      con.disconnect(); 
     } 
    } 
} 

EDIT: o tal vez un error ?: http://bugs.sun.com/view_bug.do;jsessionid=2bc7386e2f8b4e2550f8b10122f?bug_id=6309072 para comprobar esto si el error se sigue produciendo con el código anterior intente:

 Image img=new ImageIcon(url).getImage(); 
+0

La técnica ImageIcon funcionó. Gracias. – Bergil

+0

Hmmm, ¿podría ser un error? Me alegro de que lo hayas hecho. Tengo el hábito de ImageIcon(). getImage() así que nunca tuve problemas. –

+0

¡Recuerde cerrar las secuencias de entrada después de leer la imagen (incluso si se lanza una excepción)! –