【发布时间】:2015-02-23 23:15:07
【问题描述】:
我在尝试解析 atom 提要时收到以下错误。 org.apache.abdera.parser.ParseException:java.lang.ArrayIndexOutOfBoundsException 在 org.apache.abdera.parser.stax.FOMParser.parse(FOMParser.java:128) 在 org.apache.abdera.util.AbstractParser.parse(AbstractParser.java:73) 在 testfeedreader.TestFeedReader.main(TestFeedReader.java:44) 引起:java.lang.ArrayIndexOutOfBoundsException ....
这是我给读者的代码。我硬编码了用于测试的 url:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testfeedreader;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import org.apache.abdera.Abdera;
import org.apache.abdera.model.Document;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Category;
import org.apache.abdera.model.Link;
import org.apache.abdera.parser.ParseException;
import org.apache.abdera.parser.Parser;
/**
*
* @author srieger
*/
public class TestFeedReader {
private static Abdera abdera = null;
/**
*
* @return
*/
public static synchronized Abdera getInstance() {
if (abdera == null) {
abdera = new Abdera();
}
return abdera;
}
public static void main(String[] args) {
Parser parser = getInstance().getParser();
try {
URL url = new URL("http://connect.lmsnet.com/files/basic/anonymous/api/documents/feed");
Document<Feed> doc = parser.parse(url.openStream(), url.toString());
Feed feed = doc.getRoot();
// Get the feed title
System.out.println("Feed Title: " + feed.getTitle());
// Get the entry items...
for (Entry entry : feed.getEntries()) {
System.out.println("Title: " + entry.getTitle());
System.out.println("Unique Identifier: " + entry.getId().toString());
System.out.println("Updated Date: " + entry.getUpdated().toString());
System.out.println("Published Date: " + entry.getPublished());
System.out.println("Content: " + entry.getContent());
// Get the links
for (Link link : (List<Link>) entry.getLinks()) {
System.out.println("Link: " + link.getHref());
}
// Get the categories
for (Category category : (List<Category>) entry.getCategories()) {
System.out.println("Category: " + category.getTerm());
}
}
} catch( IOException | ParseException e )
{
e.printStackTrace();
}
}
}
【问题讨论】:
-
源代码中的哪一行是 44?我猜:
Document<Feed> doc = parser.parse(url.openStream(), url.toString());我认为 atom 提要格式不正确... -
另一个想法:你确定你得到 atom 作为响应吗?我认为代码从 url 获取错误页面或登录页面。
-
如果我在浏览器中使用此 URL,它会提示我登录(基本身份验证),因此响应不是您的代码所期望的。
-
是第 44 行是 parser.parse(...) 行。
-
奥利弗,多么新颖的想法。大声笑我什至没有考虑过。该网站是安全的.....一旦我通过浏览器登录并在浏览器中使用该网址,我确实得到了提要。当我在 NetBeans 中运行它时,它会出错。我想知道一旦我通过浏览器登录,Netbeans 是否会使用我相同的标头,还是我必须在 NetBeans 中构建一些登录功能?
标签: xpages ibm-connections apache-abdera