我正在尝试通过开发人员指南:Java学习如何使用Google Spreadsheets API。我的应用程序可以对电子表格服务进行身份验证,检索基于工作表的订阅源并创建表格。下一步是创建一个表记录我想要做的事情。我的问题是当我运行应用程序时,我得到了这个错误:
Service failure
com.google.gdata.util.InvalidEntryException: Bad Request
[Line 1, Column 429, element entry] Required extension element http://schemas.google.com/spreadsheets/2006:header not found.
这是创建表的代码部分:
//Creating a table record
String nameValuePairs = "Column A=Rosa";
RecordEntry entryToChange = new RecordEntry();
// Split first by the commas between the different fields.
for (String nameValuePair : nameValuePairs.split(",")) {
// Then split by the equal sign.
String[] parts = nameValuePair.split("=", 2);
String name = parts[0]; // such as "name"
String value = parts[1]; // such as "Fred"
entryToChange.addField(new Field(null, name, value));
}
try {
myService.insert(tableFeedUrl, entryToChange);
} catch (IOException e) {
System.err.println("I/0 problem");
e.printStackTrace();
} catch (ServiceException e) {
System.err.println("Service failure");
e.printStackTrace();
}
tableFeedUrl:
tableFeedUrl = factory.getTableFeedUrl(entry.getKey());
条目:
entry = spreadsheets.get(0);
显然问题来自:
myService.insert(tableFeedUrl, entryToChange);
但我不确定,我不明白为什么......
感谢您的帮助。
答案 0 :(得分:2)
我找到了解决方案。我会回答那些有同样问题的人的问题。
我用:
myService.insert(tableFeedUrl, entryToChange);
“tableFeedUrl”对应于:
http://spreadsheets.google.com/feeds/<key>/tables/
这不是访问表格的正确链接(the doc)。
但在Java developers guide注意到我们必须使用:
myService.insert(recordFeedUrl, entryToChange);
“recordFeedUrl”来自:
URL recordFeedUrl = tableEntry.getRecordFeedUrl();
但方法:getRecordFeedUrl()不存在......(the doc)
解决方案是手动创建URL:
recordFeedUrl = new URL(table.getId().toString().replace("tables", "records"));
所以URL对应于表:
https://spreadsheets.google.com/feeds/<key>/records/60
“60”对应于表格编号。
我希望它会有所帮助!