2012-06-15 11 views
5

Sto cercando di ottenere un'immagine da Internet da un URL in java. Sto usando il seguente codice.Immagine di lettura Java dall'URL sospesa

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

A volte funziona e talvolta si blocca indefinitamente, a seconda di cosa sia WebAddress. Nessun messaggio di errore, continua a funzionare e non fa nulla.

Ci sono sicuramente immagini negli indirizzi in cui si blocca per sempre, come confermato copiandole e incollandole in un browser web. Non sembra esserci alcun modello a cui si lavora e quali no ... sono tutti jpeg. Ho fatto qualche ricerca e ho trovato alcuni altri metodi per ottenere un'immagine da un URL, ma la stessa cosa accade con tutti loro: lavorano su alcune immagini e si bloccano su altre.

Avete idea di cosa potrebbe causare questo e come risolverlo?

+1

Puoi fornire un URL di esempio su cui si blocca? – npe

risposta

5

Hmm Non sono sicuro di provare questo e vedere se vengono apportate modifiche o errori. Penso anche che forse hai setRedirects (boolean b) per falso questo anche magari dando problemi ma provate questo primo:

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 forse un bug ?: http://bugs.sun.com/view_bug.do;jsessionid=2bc7386e2f8b4e2550f8b10122f?bug_id=6309072 per verificare questo se l'errore si verifica ancora con il sopra codice provare:

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

La tecnica ImageIcon ha funzionato. Grazie. – Bergil

+0

Hmmm quindi potrebbe essere solo un bug? ben contento che tu abbia funzionato, ho preso l'abitudine di ImageIcon(). getImage() quindi non ha mai avuto problemi. –

+0

Ricordarsi di chiudere i flussi di input dopo aver letto l'immagine (anche se viene lanciata un'eccezione)! –