Java GData Spreadsheets API无法获取Feed

时间:2011-01-20 00:02:16

标签: java spreadsheet gdata-api google-sheets

我正在尝试通过doc的密钥获取特定文档。我按照这里的说明进行操作:https://code.google.com/apis/spreadsheets/data/3.0/reference.html#ConstructingURIs

我从网址获取密钥:https://spreadsheets.google.com/ccc?key=0Aoz...mcmc&hl=en#gid=0

URL feedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full/0Aoz...mcmc");
SpreadsheetFeed feed = _service.getFeed(feedUrl, SpreadsheetFeed.class);
_entry = feed.getEntries().get(0);

它给了我以下例外:

Exception in thread "main" com.google.gdata.util.ParseException: [Line 1, Column 165]
Invalid root element, expected (namespace uri:local name) of (http://www.w3.org/2005/Atom:feed),
    found (http://www.w3.org/2005/Atom:entry

这个例外并没有真正意义重大。我想它希望标签是根,但它正在得到。如果我转到我用于feedUrl的URL,那么我会得到我想要的XML文档(具有我想要的文档的名称和所有内容)。我不知道我在这里做错了什么,我找不到任何可以帮助我的网络。

任何人都能看到我做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

feedUrl应为“https://spreadsheets.google.com/feeds/spreadsheets/private/full/”以获取退货Feedtypes

答案 1 :(得分:0)

我知道这是一个讨厌的黑客工作,但因为我找不到任何其他解决方案,我最终下载了com.google.gdata.wireformats.input.AtomDataParser的源代码,创建了一个注入了预期标签的Reader对象包装器进入解析的流。我在AtomDataParser代码中更改了这一行:

feedResult.parseAtom(inProps.getExtensionProfile(), inputReader);

为:

if(feedResult instanceof SpreadsheetFeed) {
    feedResult.parseAtom(inProps.getExtensionProfile(), new utils.ReaderWrapper(inputReader));
} else {
    feedResult.parseAtom(inProps.getExtensionProfile(), inputReader);
}

如果您将SpreadsheetFeed与任何其他网址一起使用,这显然不会起作用,但它适用于我正在做的事情。