我試圖不重新發明這裏的車輪...Davical同步令牌Web請求
我發現在CalDAV同步實施了一些不錯的文檔there
根據其網站,DaviCal是rfc6578自0.9.8版起(見here)。
如下因此,我先把我的請求得到了同步令牌:
PROPFIND http://my_cal_srv/user/calendar_path HTTP/1.1
Content-Type: application/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
<d:propfind xmlns:d='DAV:'>
<d:prop>
<d:displayname />
<d:sync-token />
</d:prop>
</d:propfind>
這將返回預期的數據:
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>/caldav.php/user/calendar_path/</href>
<propstat>
<prop>
<displayname>My Calendar</displayname>
<sync-token>data:,9</sync-token>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
到目前爲止好,我有一個令牌,它的「數據:,9「。所以,讓我們嘗試從8開始獲取更改,這是我在添加事件之前查詢服務器時獲得的令牌。
REPORT http://my_cal_srv/user/calendar_path HTTP/1.1
Content-Type: application/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
<d:sync-collection xmlns:d="DAV:">
<d:sync-token>8</d:sync-token>
<d:sync-level>1</d:sync-level>
<d:prop>
<d:getetag/>
</d:prop>
</d:sync-collection>
答案是:
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>/caldav.php/user/path/86166f9c-3e2e-4242-9a28-0f3bfb1dd67a-caldavsyncadapter.ics</href>
<propstat>
<prop>
<getetag>"5ed2101b0c867e490dbd71d40c7071bb"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/user/path/cb354fab-b41d-49ad-8a4f-8d68c9090ea0.ics</href>
<propstat>
<prop>
<getetag>"334892703f4151024e9232eab9b515a7"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<sync-token>data:,9</sync-token>
</multistatus>
刪除條目後(所以我得到同步令牌10,仍然比較使用令牌8),我得到以下結果:
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>/caldav.php/user/cal_path/86166f9c-3e2e-4242-9a28-0f3bfb1dd67a-caldavsyncadapter.ics</href>
<status>HTTP/1.1 404 Not Found</status>
</response>
<response>
<href>/caldav.php/user/cal_path/cb354fab-b41d-49ad-8a4f-8d68c9090ea0.ics</href>
<propstat>
<prop>
<getetag>"334892703f4151024e9232eab9b515a7"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<sync-token>data:,10</sync-token>
</multistatus>
所以我有點困惑,因爲我真的不知道如何解釋這些結果...
有人可以請exp讓我知道如何從這裏提取同步信息?這是有點難以弄清楚的變化類型,因爲ICS的名稱不清楚...
在此先感謝幫助...和快活的X - 馬斯! Regards, N.
這裏所有的作品都很好。 請注意,對於** DaviCal **,看起來如果令牌已過期,服務器會自動在請求中返回** ALL **事件。我用任意一個隨機密鑰測試了請求,並且我從來沒有收到錯誤響應,但是查看內容時,它總是返回位於服務器上的所有事件。 – neggenbe
DaviCal中的主要錯誤。當一個令牌過期時,客戶如何找出哪些資源被刪除?對於客戶端來說,它看起來像令牌很好,並將結果作爲變更集處理(沒有指示響應包含所有內容)。 – hnh
好點 - 關於如何應對這個問題的任何建議? – neggenbe