来自URL的Jsoup Java FileNotFoundException

时间:2013-06-23 10:17:01

标签: java android gridview jsoup filenotfoundexception

我正在使用Jsoup从这个意大利网站上抓取一系列图片

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

在带有Jsoup的AsyncTask中,我从HTML中获取了图像的所有网址:

@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,我正在加载我之后放入gridView的url中的图像:

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;
    }
}

问题是:某些图片显示正常,但其他一些图片显示此错误:

06-23 10:06:06.930:I / System.out(493):java.io.FileNotFoundException:http://www.italiaebraica.org/images/phocagallery/famiglia_levi/thumbs/phoca_thumb_m_Famiglia Levi 024.jpg

有什么问题?如何以正确的方式获得所有图片? 请帮忙, 希望很清楚, 我是初级开发人员!

2 个答案:

答案 0 :(得分:0)

 java.io.FileNotFoundException:

非常明显。打印出网址,以便您可以看到导致异常的网址。调试不应该花太长时间。

我不知道什么图像存在,什么不存在,所以你就是那个必须弄明白的人。

答案 1 :(得分: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;
    }
}