Я делаю один и тот же запрос, чтобы получать события календаря двумя разными способами. Странно то, что одним способом это работает, а другим - нет, хотя все почти одинаково. Используя timeMin, timeMax в Google API Explorer возвращает неверный запрос для времени, которое отправляет второй метод.
Не только это, но и в документации API Календаря Google указано, что поле должно быть 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
Обратите внимание, что клиент одинаков для обоих. Клиент во втором методе успешно получает список календарей для учетной записи. Я проверил, что идентификатор календаря правильный, что оставляет меня с ошибкой, исходящей от startMin и startMax.
Любая помощь приветствуется.
Ура, Z