-1

我正在尝试使用 jsoup 基于某些属性提取链接。当我将它作为一个简单的 java 程序运行时,该代码运行良好,但是当我在 Android 中运行它时,我没有得到结果。我正在运行的代码如下:

List<String> feeds = new ArrayList<>();
try {
    Document doc = Jsoup.connect("http://www.bbc.co.uk/news/").get();
    Elements links = doc.getElementsByTag("link");

    String type = "application/rss+xml";

    for (Element link : links) {
        if (link.attr("type").equals(type)) {
            //System.out.println(link.attr("href"));
            feeds.add(link.attr("href"));
        }
    }

} catch (IOException e) {
    e.printStackTrace();
}

for(String item : feeds){
    System.out.println(item);
}

作为一个简单的 java 代码,它能够在 bbc.co.uk/news 上找到一个 RSS 文件的链接,但是当我在 Android AsyncTask 中运行它时,我没有得到任何结果。有什么解释吗?

4

2 回答 2

1

这似乎是一个问题User-Agent。尝试覆盖默认值userAgent,如下所示

Document doc = Jsoup.connect("http://www.bbc.co.uk/news/")
           .userAgent("Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36")
           .get();
于 2013-07-30T18:49:19.280 回答
0

很可能您会收到套接字超时。尝试增加超时值

Jsoup.connect(url).timeout(10000).get();

检查您的堆栈跟踪是否有java.net.SocketTimeoutException's.

于 2013-07-30T18:03:39.927 回答