2014-04-09 5 views
1

자바 클라이언트 라이브러리를 사용하여 캘린더의 인증 및 검색을 성공적으로 구현했습니다. 내 문제는 여러 캘린더에서 이벤트 목록을 가져오고 싶지만 각 캘린더에 개별 API 요청을 보내는 데 걸리는 시간이 합산되기 시작하여 많은 캘린더를 사용하도록 설정 한 경우 20 초 페이지로드 시간이 발생합니다. . API가 여러 캘린더의 이벤트를 요청하는 방법을 제공하지 않지만 BatchRequest 클래스를 사용하여 요청을 그룹화 할 수 있습니까?Google 캘린더 API V3 일괄 목록 이벤트

이 예제를 사용하면 여러 개의 캘린더를 일괄 적으로 삽입 할 수 있습니다.

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

그러나 나는 나열 이벤트에이를 확장 할 수 없습니다. 기본적으로, 나는이 작업을 수행 할 수 :

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

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

: 나는 당신이 원하는처럼 뭔가를하고 있어요

for (int i=0; i < calendarIDs.length; i++) { 
    client.events().list(calendarIDs[i]).queue(batch, callback); 
} 
batch.execute(); 

답변

0

,하지만 난 배치를 사용하지 않는, 여기 내 코드의 예입니다 그래서 당신은 다른 일정에서 이벤트를 얻기 위해 변경해야 할 유일한 것은 "calendarUrl"은 "달력"구글 lib 디렉토리에서 CalendarEntry이다 캘린더 URL

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

얻을 수있는 방법이있다.

+0

응답 해 주셔서 감사합니다. 나는 그것이 올바르게 이해한다면 새로운 API (나는 캘린더 v3를 사용하고있다)에 사용되지 않는 gdata를 사용하고 있다고 생각한다. – user3516659

+0

그래, 내가 gdata를 사용하고있다 : S – Flixar

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

성능이 많이 개선 된 것으로 보인다.