首页 文章

RSS Feed Library无法正常工作

提问于
浏览
1

我在我的android项目中使用这个库来读取RSS Feed:

https://github.com/matshofman/Android-RSS-Reader-Library

现在我刚刚开始,我正在努力让任何RSS提要工作并发出一个字符串( Headers )并在textview中显示它 . 如果可行,我将继续将其添加到列表视图中,然后在另一个窗口中打开 .

但实际上,下面的代码不起作用:

TextView t = (TextView) findViewById(R.id.textView1);
    try {
         url = new URL("http://feeds.feedburner.com/ndtv/TqgX");
    } catch (Exception e) {
        t.setText("URLerror");
    }
    try {
        RssFeed feed = RssReader.read(url);
        ArrayList<RssItem> rssItems = feed.getRssItems();
        String sn = feed.getTitle();
        t.setText(sn);
        for (RssItem rssItem : rssItems) {
            Log.i("RSS Reader", rssItem.getTitle());
        }
    } catch (Exception e) {
        Log.i("Error", "eror");
        t.setText("RSSerror");
    }

在运行Textview时设置为“RSSerror”,因此问题出在第二个try块中 . 以下是图书馆的官方示例:

URL url = new URL("http://example.com/feed.rss");
RssFeed feed = RssReader.read(url);

ArrayList<RssItem> rssItems = feed.getRssItems();
for(RssItem rssItem : rssItems) {
    Log.i("RSS Reader", rssItem.getTitle());
}

我使用错误的RSS URL格式吗?或者是其他东西?

这是RSSReader类:

公共类RssReader {

public static RssFeed read(URL url) throws SAXException, IOException {

    return read(url.openStream());

}

public static RssFeed read(InputStream stream) throws SAXException, IOException {

    try {

        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser parser = factory.newSAXParser();
        XMLReader reader = parser.getXMLReader();
        RssHandler handler = new RssHandler();
        InputSource input = new InputSource(stream);

        reader.setContentHandler(handler);
        reader.parse(input);

        return handler.getResult();

    } catch (ParserConfigurationException e) {
        throw new SAXException();
    }

}

我有另外3个人,RSSItem,RSSHandler和RSSFeed,据我所知,这些工作很棒 . 可能导致问题的原因是什么?

如果你需要其他课程,请问(或者,查看giuhub项目)

任何输入将不胜感激:-)

1 回答

  • 4

    试试这个图书馆:https://github.com/Pkmmte/PkRSS

    它默认适用于大多数RSS源并有效下载,但它也允许您插入自己的Parser并制作它 .

    对于您的代码,这样的东西可以工作:

    TextView t = (TextView) findViewById(R.id.textView1);
    try {
        url = new URL("http://feeds.feedburner.com/ndtv/TqgX");
    } catch (Exception e) {
        t.setText("URLerror");
    }
    try {
        List<Article> rssItems = PkRSS.with(this).load(url).get();
        Article article = rssItems.get(0);
        t.setText(article.getTitle());
        for (Article item : rssItems) {
            Log.i("PkRSS", item.toShortString());
        }
    } catch (Exception e) {
        Log.i("Error", "eror");
        t.setText("RSSerror");
    }
    

    虽然您可能希望使用 PkRSS.with(this).load(url).callback(this).async(); 异步加载这些

相关问题