确定URL是否为Feed

时间:2012-12-17 18:57:24

标签: java php zend-framework feed

  

可能重复:
  How To Discover RSS Feeds for a given URL

如果有网址,我想知道它是否是Feed。

Zend Framework中,可以将网址导入feed

try {
    $slashdotRss =
        Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import failed
    echo "Exception caught importing feed: {$e->getMessage()}\n";
    exit;
}

如果抛出异常,那么我知道该URL不是Feed。

我想在Java中使用相同的算法,所以我的问题是:Zend如何知道URL是否是feed?

3 个答案:

答案 0 :(得分:1)

在浏览器中打开网址并查看来源。你会注意到,它是一个具有特定格式的xml文档(它在某处标准化。谷歌为它)。什么Zend框架(注意,Zend是一家公司)可能会尝试解析这个文档。当它不是有效的饲料时,它显然会失败。

答案 1 :(得分:1)

我要做的是将其转到rome并尝试解析它。如果它无法解析,它将抛出FeedException:

public boolean tryFeed(String feedUrl) throws IOException,MalformedURLException { 
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = null;
    try {
        feed = input.build(new XmlReader(new URL(feedUrl)));
        return true;
    } catch (FeedException e) {
        // Feed's invalid
        return false;
    }

}

答案 2 :(得分:0)

我对Zend的内部结构并不熟悉,但对于我写过的读者,我通常会寻找Mime类型 的 application/rss+xml

这是确定资源是什么的标准方法。

当然,一些编程不当/配置不当的源可能不符合标准,就像可以将PNG文件的mime类型设置为text/javascript或同样非感性的东西一样。 / p>

作为后备,解析文件是一种可行的方法,假设Feed已正确格式化。