2013-06-16 42 views
6

Google Takvim API'sında basit bir freebusy sorgusu yürütmeye çalışıyorum. Yetki verdiğim her şey iyi çalışıyor, kullanıcı takvimlerinin listesini görebiliyor, vb. Serbest/meşgul bir sorgu göndermeye çalıştığımda, (anlayabildiğim kadarıyla) bir 400 hatası alıyorum. sevmez.Google takvim API 400 hatası

Bu, hem kendi kodumda hem de Google Calendar API "Try It" özelliğini kullandığımda geçerlidir. İşte

(widget Deneyin kullanılarak oluşturulan) benim istek olduğunu ve yanıtı:

POST https://www.googleapis.com/calendar/v3/freeBusy?key={YOUR_API_KEY} 

Content-Type: application/json 
Authorization: Bearer ya29.AHES6ZTr-2wksEvp0iGPTnHTirTIItib5WwxmSAySq1ghfI98Cz88kA 
X-JavaScript-User-Agent: Google APIs Explorer 

{ 
    "items": [ 
      { 
       "id": "[my calendar id goes here]@group.calendar.google.com" 
      } 
    ], 
    "timeMin": "2012-01-31T09:00:00", 
    "timeMax": "2012-01-31T10:00:00", 
    "timeZone": "GMT" 
} 

Response 


400 Bad Request 

cache-control: private, max-age=0 
content-encoding: gzip 
content-length: 122 
content-type: application/json; charset=UTF-8 
date: Sun, 16 Jun 2013 13:08:32 GMT 
expires: Sun, 16 Jun 2013 13:08:32 GMT 
server: GSE 

{ 
    "error": { 
    "errors": [ 
      { 
       "domain": "global", 
       "reason": "badRequest", 
       "message": "Bad Request" 
      } 
    ], 
    "code": 400, 
    "message": "Bad Request" 
    } 
} 

Ben dateTime nesneler/biçimlendirme ile ilgili bir şey olabileceğini düşünüyorum Talebi? Ama ben hiçbir fikrim yok. Bazı yardımları gerçekten takdir ediyorum; Bir hafta boyunca kafamı buna karşı vuruyorum!

+0

'timeZone'u kullanıyor:" UTC "' veya bu özelliği kaldırmak bir şeyi değiştiriyor mu? URL'deki API anahtarı kaçıyor mu? bkz: http://stackoverflow.com/questions/15926676/google-calendar-api-bad-request-400-event-over-developer-console#comment22712451_15937488 –

+0

UTC'yi kullanmayı denedim, mülkü kaldırarak min/max sürelerinde zaman dilimi ofseti. Hiçbiri bir şey değiştirmedi. Google’ın API gezginini kullandığımdan, hiçbir şeyden kaçmanın yolu yok. – nilatti

cevap

14

Tamam, anladım ve cevabını bilen herkes için cevabı bırakıyorum.

2008-03-07T17: 06: Google'ın belgelerine bu durumda datetime için biçimi hakkında ne diyor rağmen

, ben işe alabilir tek formatı bu oldu 02.000Z

böylece YYYY var -MM-DDTHH: MM: SS: MMMZ

Z ne içindir? Bilmiyorum, ama orada olmalı.

+0

Z, "Zulu" için mi? Ne. . Cehennem. Ancak ayrı bir mülkte saat dilimi belirtebilir ve bu çalışır. – nilatti

+3

Z, UTC ([Koordine Edilmiş Evrensel Zaman] (http://en.wikipedia.org/wiki/Coordinated_Universal_Time)) zaman diliminin kısaltmasıdır. Kalıcılığınız için puan. – Bobulous

+0

Bunu çok spesifik olarak düşündüm ve bunu onayladınız! Teşekkürler –

0

Tarih saat değeri UTC "TZ" biçiminde olmalıdır. Hemen hemen tüm CRM'ler ve genel API bu süreyi kabul eder. Tarih dilini (C veya Java gibi) kütüphane işlevlerini/yöntemlerini kullanarak UTC zamanına dönüştürürseniz, bir datetime örneğini YYYY-AA-DDTHH: MM: SS.MMMZ biçiminde döndürürler.

+0

Aslında bu biçim [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601) standardı tarafından tanımlanmıştır. Sonunda 'Z'' Zulu' için kısa ve UTC anlamına gelir. –