События Календарного списка API Google Calendar V3

1

Я успешно реализовал (используя клиентскую библиотеку java) аутентификацию и извлечение календарей. Моя проблема заключается в том, что я хочу получить список событий из нескольких календарей, но время, затрачиваемое на отправку отдельного запроса API для каждого календаря, начинает складываться, что приводит к 20-секундной загрузке страницы, если у меня есть много календарей, Я понимаю, что API не предоставляет способ запросить события из нескольких календарей, но могу ли я использовать класс BatchRequest для группировки моих запросов?

Мне удалось заставить этот пример работать, чтобы вставить несколько календарей в пакетном режиме.

https://code.google.com/p/google-api-java-client/source/browse/calendar-cmdline-sample/src/main/java/com/google/api/services/samples/calendar/cmdline/CalendarSample.java?repo=samples

Но я не могу распространять это на список событий. По сути, я хочу сделать это:

for (int i=0; i < calendarIDs.length; i++) {
    client.events().list(calendarIDs[i]).queue(batch, callback);
}
batch.execute();
Теги:
google-calendar
calendar

2 ответа

1

Я только что понял это, используя несколько иной подход. Вместо использования функции очереди для объекта списка, используя функцию batch.queue клиента:

BatchRequest batch = client.batch();            
for (int i=0; i< calendarIDs.length; i++) {    
    List req = client.events().list( calendarIDs[i]);        
    batch.queue(req.buildHttpRequest(), Calendar.class, GoogleJsonErrorContainer.class, mycallback);
}           
batch.execute();

Это, кажется, улучшило производительность.

0

Я делаю то, что похоже на то, что вы хотите, но я не использую пакет, вот пример моего кода:

CalendarEventFeed resultFeed = service.getFeed(calendarUrl, CalendarEventFeed.class); 

for (int i = 0; i < resultFeed.getEntries().size(); i++) { 
     CalendarEventEntry entry = resultFeed.getEntries().get(i); 
} 

Итак, единственное, что вам нужно будет изменить, чтобы получить событие из другого календаря, это "calendarUrl", это как вы можете получить свой URL-адрес календаря

calendarUrl = new URL(calendar.getLink(Link.Rel.ALTERNATE, Link.Type.ATOM).getHref()); 

где "calendar" - это CalendarEntry из google lib.

  • 0
    Спасибо за ответ! Я думаю, что это использует gdata, который не используется для новых API (я использую календарь v3), если я правильно понимаю.
  • 0
    Да, я использую gdata извините: S

Ещё вопросы

Сообщество Overcoder
Наверх
Меню