Java 无法读取简单RSS源

Java 无法读取简单RSS源,java,rss,rss-reader,Java,Rss,Rss Reader,我有一个简单的代码来读取RSS提要。它过去在给定的RSS提要上工作正常,但由于某种原因,它停止工作,出现以下异常: Exception in thread "main" java.lang.IllegalArgumentException: Invalid document at com.rometools.rome.io.WireFeedInput.build(WireFeedInput.java:312) at com.rometools.rome.io.WireFeedInput.buil

我有一个简单的代码来读取RSS提要。它过去在给定的RSS提要上工作正常,但由于某种原因,它停止工作,出现以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: Invalid document
at com.rometools.rome.io.WireFeedInput.build(WireFeedInput.java:312)
at com.rometools.rome.io.WireFeedInput.build(WireFeedInput.java:234)
at com.rometools.rome.io.SyndFeedInput.build(SyndFeedInput.java:150)
代码如下:

    URL url  = new URL("http://www.dpreview.com/feeds/reviews/latest");
    XmlReader reader = null;
    try {
        reader = new XmlReader(url);
        SyndFeed feeder = new SyndFeedInput().build(reader);
        System.out.println("Feed Title: "+ feeder.getAuthor());
        for (Iterator i = feeder.getEntries().iterator(); i.hasNext();) {
            SyndEntry syndEntry = (SyndEntry) i.next();
            System.out.println(syndEntry.getTitle());
        }
    } finally {
        if (reader != null)
            reader.close();
    }

我缺少什么吗?

URL有问题。将
对象移动到
进行响应。这就是异常
无效文档的原因

这意味着
XmlReader
不支持304重定向

因此,如果您将URL改为
https
,而不是
http
,则一切正常


也有类似的情况,也就是说,你必须自己处理重定向问题。

谢谢@muradm。我想知道为什么框架不遵循重定向。。。RSS提要应该是一个常见的用例……正如它在文档中所说的,它与提要一起工作,但不关注传输。它包括非常基本的http客户端。如果选中
XmlReader
,它可以从不同的源(包括流)进行读取。因此,您可以在那里插入任何类型的数据源,比如更高级的http客户端,或者其他一些实现,比如夸大websocket、原始tcp/ip、数据库等。