2013-07-30 52 views
-1

我想提取基於使用jsoup的某些屬性的鏈接。代碼工作正常 當我運行它作爲一個簡單的Java程序,但是當我在Android中運行它,我沒有得到結果。我運行的代碼如下:jsoup不能正確解析HTML上的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裏面,我沒有得到任何結果。 任何解釋?

+0

您的應用程序有互聯網的權限? – dymmeh

+0

是的,它有互聯網權限 – user2635155

+0

有一個很好的機會,你只是沒有正確使用異步任務。你爲什麼不粘貼你的異步任務代碼? –

回答

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(); 
0

很可能你會得到套接字超時。儘量增加timout值

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

檢查堆棧跟蹤java.net.SocketTimeoutException的。

+0

我試過了,但沒有改進,並且引發了異常。 – user2635155

+0

我甚至試過其他的東西:而不是隻提取「應用程序/ rss + xml」鏈接,我試圖提取所有鏈接。我得到了奇怪的結果:普通的java程序返回所有鏈接,包括一個應用程序/ rss + xml。 Android版本也會返回一些鏈接,但是這次應用程序/ rss + xml丟失了! – user2635155