簡體   English   中英

Google Calendar API V3批處理列表事件

[英]Google Calendar API V3 Batch list events

我已經成功實現了(使用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();

我終於使用稍微不同的方法弄清楚了。 而不是使用list對象的queue函數,而是使用客戶端的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();

這似乎改善了很多性能。

我正在做的事情看起來像您想要的,但是我沒有使用批處理,這是我的代碼示例:

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”是來自Google lib的CalendarEntry。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM