2012-06-15 39 views
5

Tôi đang cố gắng để có được một hình ảnh ra khỏi internet từ một URL trong java. Tôi đang sử dụng mã sau đây.Hình ảnh đọc Java từ URL treo

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

Đôi khi nó hoạt động và đôi khi nó chỉ treo vô thời hạn, tùy thuộc vào WebAddress là gì. Không có thông báo lỗi, nó chỉ tiếp tục chạy và không làm gì cả.

Có những hình ảnh chắc chắn tại địa chỉ nơi nó treo mãi mãi, như được xác nhận bằng cách sao chép và dán chúng vào trình duyệt web. Có vẻ như không có mô hình mà những người làm việc và những người thân không - tất cả đều là jpegs. Tôi đã thực hiện một số tìm kiếm và tìm thấy một số phương pháp khác để có được một hình ảnh từ một URL, nhưng điều tương tự xảy ra với tất cả chúng - họ làm việc trên một số hình ảnh và treo trên những người khác.

Bạn có biết bất kỳ điều gì có thể gây ra điều này không và cách khắc phục?

+1

Bạn có thể cung cấp URL ví dụ về URL bị treo không? – npe

Trả lời

5

Hmm Tôi không chắc chắn và thử xem có thay đổi hay lỗi nào không. Tôi cũng nghĩ rằng có thể bạn có setRedirects (boolean b) false này cũng có thể đưa ra các vấn đề nhưng cố gắng này đầu tiên:

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: hoặc có thể là một lỗi ?: http://bugs.sun.com/view_bug.do;jsessionid=2bc7386e2f8b4e2550f8b10122f?bug_id=6309072 để kiểm tra này nếu lỗi vẫn xảy ra với ở trên mã thử:

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

Kỹ thuật ImageIcon hoạt động. Cảm ơn. – Bergil

+0

Hmmm do đó, nó có thể chỉ là một lỗi? cũng vui vì bạn đã có nó làm việc tôi đã có thói quen của ImageIcon(). getImage() vì vậy không bao giờ gặp rắc rối. –

+0

Hãy nhớ đóng các luồng đầu vào sau khi đọc hình ảnh (ngay cả khi một ngoại lệ được ném)! –

Các vấn đề liên quan