2013-06-23 105 views
0

我使用Jsoup在與Jsoup我是從HTML獲取圖像的所有URL的的AsyncTask從這個意大利網站Jsoup的Java FileNotFoundException異常從URL

http://www.italiaebraica.org/index.php?option=com_phocagallery&view=category&id=3:famiglia-levi&Itemid=143&lang=it

刮圖片庫:

@Override 
protected Void doInBackground(String... params) { 

    Document doc; 

    try { 
     ConnectivityManager conMgr = (ConnectivityManager) mActivity 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     if (conMgr.getActiveNetworkInfo() != null 
       && conMgr.getActiveNetworkInfo().isAvailable() 
       && conMgr.getActiveNetworkInfo().isConnected()) { 
      doc = Jsoup 
        .connect(urlReceivedToConnect) 
        .timeout(0).get(); 
      Elements imgList = doc.getElementsByClass("phocagallery-box-file-third").select("img"); 
      photoList = new ArrayList<String>(); 
      ListIterator<Element> post = imgList.listIterator(); 

      while (post.hasNext()) { 
       photoList.add(post.next().attr("abs:src")); 
      } 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 
} 

然後,在costumized適配器,我採取這一urlsList和我加載從URL中,我是後來投入GridView中圖片:

private Drawable LoadImageFromURL(String url) { 
    try { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src"); 
     return d; 
    } catch (Exception e) { 
     System.out.println(e); 
     return null; 
    } 
} 

的問題是:一些照片顯示和都OK,但其他一些人提出了這樣的錯誤:

十月6日至23日:06:06.930:我/的System.out(493):java.io .FileNotFoundException:http://www.italiaebraica.org/images/phocagallery/famiglia_levi/thumbs/phoca_thumb_m_Famiglia Levi 024.jpg

有什麼問題?我怎樣才能以正確的方式獲得所有的照片? 請幫忙, 希望很清楚, 我是初級開發者!

回答

0
java.io.FileNotFoundException: 

是不言自明的。打印出這些網址,以便查看導致異常的網址。調試不應該花太長時間。

我不知道什麼圖像存在,什麼不存在,所以你是一個必須弄清楚的人。

+0

我已經可以看到,導致異常的網址,問題是,如果我在瀏覽器中運行他們,他們給我的圖像,但Java不能找到他們。也許我應該以某種方式解析網址以使它們正常,或者有另一種解決方案。 – user2404626

0

URL的空格有什麼問題。大多數瀏覽器都會檢測是否有空格,並將其替換爲%20,這樣您就不會在瀏覽器中看到任何錯誤。因此,我建議使用:

private Drawable LoadImageFromURL(String url) { 
    if(url.contains(" ")){ 
     url.replace(" ", "%20"); 
    } 
    try { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src"); 
     return d; 
    } catch (Exception e) { 
     System.out.println(e); 
     return null; 
    } 
} 
相關問題