Как я могу использовать API Календаря Google для Java, чтобы удалить событие из моего Календаря Google? - PullRequest
3 голосов
/ 07 мая 2011

Я искал все выше и ниже, чтобы найти пример, поскольку то, что я пытаюсь, похоже, не работает. Я получаю эту ошибку:

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);

Он был расколот и изменен настолько, что я не уверен, где я сейчас с ним. Кто-нибудь сталкивался с этой проблемой? Если да, то как ты это преодолел? Кто-нибудь получил пример кода, который работает, поскольку Google предоставляет только одну строку кода в своем объяснении.

Ответы [ 2 ]

1 голос
/ 06 апреля 2014

Единственное, что вам нужно сделать, это иметь «дескриптор» для вашего события, есть другой способ получить его, я покажу вам, как это сделать, если вы хотите удалить определенное событие в вашем календаре

    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();
    }

Таким образом, вам нужно только установить заголовок (или любой другой параметр) определенного календаря, если вы не знаете, как получить «ручку» в календаре, который вы уже создали ранее, я могу объяснить вам как. В моем коде «календарь» - это ClendarEntry.

1 голос
/ 07 мая 2011

Можете ли вы попробовать

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

вместо

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

?

Я думаю, что остальной код, который у вас есть для вставки записи событияВы не можете вызвать обновление с ним.Если вы измените его на вставку, он вставит и удалит запись (если это сработало), и я не вижу в этом смысла.Если вы пытаетесь получить запись и удалить ее, в сообщении есть несколько примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...