如何使用Google Calendar API for Java删除Google日历上的活动?

时间:2011-05-07 01:22:26

标签: java google-calendar-api

我搜索了高低,找到了一个例子,因为我正在尝试的似乎并没有起作用。我收到了这个错误:

com.google.gdata.util.InvalidEntryException: Bad Request
Invalid request URI

    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.update(Service.java:1563)
    at com.google.gdata.client.Service.update(Service.java:1530)
    at com.google.gdata.client.GoogleService.update(GoogleService.java:583)
    at CalendarConnect.deleteEvent(CalendarConnect.java:37)
    at ProgMain.main(ProgMain.java:26)

以下是我正在使用的代码示例:

CalendarService service = new CalendarService("Fourth Year Project");
             service.setUserCredentials(username, password);

             URL postUrl = new URL("https://www.google.com/calendar/feeds/default/private/full");
             CalendarEventEntry myEntry = new CalendarEventEntry();

             myEntry.setTitle(new PlainTextConstruct("TEST"));
             myEntry.setContent(new PlainTextConstruct("TEST"));

             DateTime startTime = DateTime.parseDateTime(StartDateTime);
             DateTime endTime = DateTime.parseDateTime(EndDateTime);
             When eventTimes = new When();
             eventTimes.setStartTime(startTime);
             eventTimes.setEndTime(endTime);
             myEntry.addTime(eventTimes);

             CalendarEventEntry insertedEntry = service.update(postUrl, myEntry);

             URL deleteUrl = new URL(insertedEntry.getEditLink().getHref());
             service.delete(deleteUrl);

它被切碎和改变太多了,我不知道我现在在哪里。有谁遇到过这个问题?如果是这样,你是如何克服它的?有没有人得到一些代码的例子,因为谷歌只在他们的解释中提供一行代码。

2 个答案:

答案 0 :(得分:1)

你能试试吗

CalendarEventEntry insertedEntry = service.insert(postUrl, myEntry);

而不是

CalendarEventEntry insertedEntry = service.update(postUrl, myEntry);

我认为您拥有的其余代码是用于插入事件条目,而您无法使用它调用更新。如果你把它改成插入,它将插入并删除条目(如果它工作),我没有看到它的一个点。如果您要检索条目并将其删除,the post.

中有一些示例

答案 1 :(得分:1)

你唯一需要做的就是拥有一个"手柄"在您的活动中,有不同的方式来获取它,我会告诉您如何删除日历中的特定事件

    String title = "Event title that i want to delete";

    try{
        URL calendarUrl= new URL(calendar.getLink(Link.Rel.ALTERNATE, Link.Type.ATOM).getHref());
        CalendarEventFeed resultFeed = service.getFeed(calendarUrl, CalendarEventFeed.class);

        for (int i = 0; i < resultFeed.getEntries().size(); i++) {
            CalendarEventEntry entry = resultFeed.getEntries().get(i);
            if(entry.getTitle().getPlainText().equals(title)){
                entry.delete();
                break;
            }
        }
    }
    catch (IOException e) {
        e.printStackTrace();
    } 
    catch (ServiceException e) {
        e.printStackTrace();
    }

因此,如果您不知道如何处理&#34;处理&#34;那么您只需要设置特定日历的标题(或任何设置)。在您之前已经创建的日历上,我可以向您解释如何。在我的代码中,&#34;日历&#34;是一个ClendarEntry。