2016-03-10 36 views
1

我有一個獲取feed文檔(通過http)然後解析feed(不是JSON或XML類型)的Java方法。 這是方法:如何使用Jsoup加載自定義XML提要?

public ArrayList<ArrayList<String>> getFeed(String type) 
{ 
    String feed = ""; 
    String address = ""; 
    Document file; 

    /** 
    * FEED URLs-------\/ 
    */ 
    switch (type) { 
     case "news": 
      address = "https://[domain]/svc/feeds/news/6001?subtree=false&imagesize=medium-square"; 
      break; 
     case "events": 
      address = "http://[domain]/svc/feeds/events/6001?subtree=true&imagesize=medium-square&from=%5bfromDate%5d&to=%5btoDate"; 
    } 
    try { 
     HttpURLConnection connection = (HttpURLConnection) (new URL(address)).openConnection(); 
     //TODO: @Test 
     //----------------------------\/--THIS ONE WILL CAUSE ERRORS!! 
     file = (Document)connection.getContent(); 
     connection.disconnect(); 

     //OUTPUT 
     feed = file.getElementsByAttribute("pre").text(); 
     stream = new StringReader(feed); 
    } catch (Exception e) {} 

    //BEGIN PARSING\\//--THEN OUTPUT//\\ 
    try { 
     return parse(); 
    } catch (FeedParseException e) {} 
    //de-fault 
    return null; 
} 

它不工作;說對象:'文件'造成NullPointerException。 那麼如何提高我在調試某些在我看來是非開源的精度。

P.S .:我沒有測試「事件」情況,所以不用擔心那裏的GET參數。


這裏是我的堆棧跟蹤: enter image description here

我看不出它如何幫助雖然...

+0

人?................ ............ – Olivier10178

+0

你可以粘貼一下堆棧跟蹤嗎?另外我會建議確認連接已成功完成。例如'value.getResponseCode()'的值是什麼? –

+1

你實際上並沒有用Jsoup解析Document。嘗試做一些像'file = Jsoup.connect(address).get();'。同時發佈你的堆棧跟蹤,並且更多的代碼,因爲你的代碼對我來說看起來有點奇怪。 – JonasCz

回答

1

你可以通過直接Jsoup的URL對象。

相反的:

HttpURLConnection connection = (HttpURLConnection) (new URL(address)).openConnection(); 
//TODO: @Test 
//----------------------------\/--THIS ONE WILL CAUSE ERRORS!! 
file = (Document)connection.getContent(); 
connection.disconnect(); 

file = Jsoup // 
      .connect(address) // 
      .timeout(10 * 1000) // 
      .ignoreContentType(true) // 
      .get(); 

Jsoup 1.8.3

+0

它不工作...'file:= null':( – Olivier10178

+0

@ Olivier10178你可以添加堆棧跟蹤到你的帖子嗎? – Stephan

+0

看下面................ ....................................... \ / – Olivier10178