在使用Java Google Calendar API时,我遇到了一个例外情况,我无法做到这一点。我正在做的是创建一个插入事件的Google日历连接器。其中一些事件正在重复,其中一些事件对重复模式有例外。我在创建事件和重复事件方面非常成功,但在尝试制作例外时遇到了这些问题。
我正在使用的代码是:
CalendarEventEntry gglAppt = new CalendarEventEntry();
OriginalEvent originallink = new OriginalEvent();
originallink.setOriginalId(repeatingEvent.getIcalUID());
When originalWhen = new When();
originalWhen.setStartTime(DateTime.parseDate("2011-05-01"));
originallink.setOriginalStartTime(originalWhen);
When exceptionWhen = new When();
exceptionWhen.setStartTime(DateTime.parseDate("2011-05-10"));
gglAppt.setOriginalEvent(originallink);
gglAppt.setStatus(EventStatus.CANCELED);
gglAppt.addTime(exceptionWhen);
try {
//I can vouch for this line, it works elsewhere in the code.
//CalendarServiceManager is a custom class if you didn't guess ;-)
CalendarServiceManager.getInstance().addNewEvent(gglAppt, http://www.google.com/calendar/feeds/default/calendars/testemail%40gmail.com);
} catch (IOException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
例外是:
com.google.gdata.util.InvalidEntryException: Bad Request
Element must contain value for attribute id
at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:594)
at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563)
at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552)
at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530)
at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535)
at com.google.gdata.client.Service.insert(Service.java:1409)
at com.google.gdata.client.GoogleService.insert(GoogleService.java:599)
at com.testapp.google.CalendarServiceManager.addNewEvent(CalendarServiceManager.java:138)
at com.testapp.google.GoogleAdapter.dealWithExceptions(GoogleAdapter.java:581)
...etc
根据我在互联网上看到的内容,我的理解是属性ID是您为Google对象设置的内容,供您跟踪它们。我不知道在哪里设置属性ID,我很困惑为什么我不必为我提交的任何其他事件设置属性ID。
这个被抛出的异常是什么?它是什么意思,我该怎么办呢?
任何帮助都将一如既往地受到高度赞赏。
答案 0 :(得分:0)
在这里找到我的问题的答案:
原来,repeatEvent还没有id。我刚创建它并将其发送到服务器,但没有使用从服务器返回的本地对象更新本地对象;那个有身份的人。