Я пытаюсь использовать операцию syn c -collection Google CardDAV API. Это не очень хорошо объяснено в документации . Но я думаю, что вот что они объяснили в этой документации.
Во-первых, найдите токен syn c из адресной книги с помощью операции propfind. Ниже приведен мой запрос, и я успешно получил токен syn c.
Запрос
Depth: 0
Content-Type: application/xml; charset=utf-8
<d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/">
<d:prop>
<d:displayname />
<cs:getctag />
<d:sync-token />
</d:prop>
</d:propfind>
Ответ
ncoding="UTF-8"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:ical="http://apple.com/ns/ical/">
<d:response>
<d:href>/carddav/v1/principals/some@email.com/lists/default/</d:href>
<d:propstat>
<d:status>HTTP/1.1 200 OK</d:status>
<d:prop>
<d:displayname>Address Book</d:displayname>
<d:sync-token>https://www.googleapis.com/carddav/v1/synctoken/SOMEIDINHERE</d:sync-token>
<cs:getctag>"23fq3fqefas.8"</cs:getctag>
</d:prop>
</d:propstat>
</d:response>
</d:multistatus>
Затем мы должны выполнить операцию syn c -collection с меткой syn c, чтобы получить изменения из предыдущего состояния, но это не возвращает ни одного элемента, независимо от того, какое изменение я сделать в моем списке контактов на https://contacts.google.com/.
Запрос
<?xml version="1.0" encoding="utf-8" ?>
<d:sync-collection xmlns:d="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
<d:sync-token>https://www.googleapis.com/carddav/v1/synctoken/SOMEIDINHERE</d:sync-token>
<d:sync-level>1</d:sync-level>
<d:prop>
<d:displayname />
<d:current-user-principal />
<d:principal-URL/>
</d:prop>
</d:sync-collection>
Ответ
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:ical="http://apple.com/ns/ical/">
<d:sync-token>https://www.googleapis.com/carddav/v1/synctoken/SOMEIDINHERE </d:sync-token>
</d:multistatus>
Пожалуйста, дайте мне знать, что я делаю не так.