我開始使用相同的查詢來獲取日曆事件兩種不同的方式。奇怪的是,一種方式是有效的,而另一種方式則不行,即使一切都幾乎完全相同。在Google的API Explorer中使用timeMin,timeMax會返回第二個方法發送時間的錯誤請求。獲取Google日曆條目Google API Java客戶端
不僅如此,Google Calendar API文檔還說該字段應該是start-min和start-max,而客戶端和API Explorer會說該字段應該是timeMin和timeMax。
下面是方法1,工程代碼:
void setPeriod() {
Date nowDate = new Date();
startTime = new DateTime(nowDate);
Time t = new Time();
t.setToNow();
t.hour = 23;
t.minute = 59;
nowDate.setTime(t.toMillis(false));
endTime = new DateTime(nowDate);
}
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Events evlist = g.getClient().events().list(calendarIds.get(cal)).setTimeMin(startTime).setTimeMax(endTime).execute();
if (evlist.getItems() != null) {
//Parse the events
...
}.execute();
方法2:
new AsyncTask<Void, Void, List<Event>>() {
@Override
protected List<Event> doInBackground(Void... arg0) {
Date nowDate = new Date();
DateTime startTime = new DateTime(nowDate);
Time t = new Time();
t.setToNow();
t.hour = 23;
t.minute = 59;
nowDate.setTime(t.toMillis(true));
DateTime endTime = new DateTime(nowDate);
Calendar client = com.google.api.services.calendar.Calendar
.builder(transport, jsonFactory)
.setApplicationName("Wayk by Senti")
.setHttpRequestInitializer(
new HttpRequestInitializer() {
public void initialize(HttpRequest request)
throws IOException {
request.getHeaders()
.setAuthorization(
GoogleHeaders
.getGoogleLoginValue(authToken));
}
})
.setJsonHttpRequestInitializer(
new JsonHttpRequestInitializer() {
public void initialize(
JsonHttpRequest request)
throws IOException {
CalendarRequest calendarRequest = (CalendarRequest) request;
calendarRequest
.setKey(CalendarClientCredentials.KEY);
}
}).build();
try {
List<Event> events = new ArrayList<Event>();
for (int i = currentCal; i < enables.size(); i++) {
if (enables.get(i)) {
AiLog.v("Getting events");
AiLog.v("AuthToken: " + authToken);
AiLog.v("CalendarID: " + calendarIds.get(i));
AiLog.v("Calendar name: " + calendarNames.get(i));
AiLog.v("Calendar account: " + account);
Calendar.Events.List eventReq = client.events()
.list(calendarIds.get(i)).setTimeMin(startTime).setTimeMax(endTime).execute();//Bad request here
注意,客戶正是上是相同的。第二種方法中的客戶端成功獲取該帳戶的日曆列表。我已經驗證了日曆ID是正確的,這使我得到了來自startMin和startMax的錯誤。
任何幫助表示讚賞。
乾杯,Z
這是timeMin和timeMax字段的問題。如果你刪除最小和最大時間,它工作正常。我一直在試圖解決與最新的庫相同的問題。事情是在早期版本(日曆api庫v1.5.0),timeMin和timeMax接受字符串值,所以我可以根據時區格式化日期,但現在它已被更改爲接受DateTime值並設置DateTime值,即使使用接受時區轉換的構造函數似乎不起作用併產生400錯誤請求。 – praneetloke 2012-07-19 15:01:16
我也在舊圖書館工作。不過,我終於明白了。檢查答案 – 2012-07-19 22:12:42