Related to D15001
Google works in mysterious ways:
- Sink's CardDAV client implementation works with KolabNow
- Sink's CardDAV client implementation works with my test server (Radicale)
- Doesn't work with Google
After some debugging I found:
On my test server if I do:
curl -i -X PROPFIND "http://localhost:5232/test1/8543fd29-88bf-5e45-2cf2-36f8c4657fbc" --upload-file propfind.xml -H "Depth: 1" --user 'test1:'
with propfind.xml being (exactly the same as Sink's request body):
<?xml version="1.0"?> <propfind xmlns="DAV:"> <prop xmlns="DAV:"> <displayname xmlns="DAV:"/> <resourcetype xmlns="DAV:"/> <getctag xmlns="http://calendarserver.org/ns/"/> </prop> </propfind>
I get:
<?xml version='1.0' encoding='utf-8'?><?xml version="1.0" encoding="utf-8"?> <multistatus xmlns="DAV:" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/"> <response> <href>/test1/8543fd29-88bf-5e45-2cf2-36f8c4657fbc/</href> <propstat> <prop> <displayname>AddressBook</displayname> <resourcetype> <CR:addressbook/> <collection/> </resourcetype> <CS:getctag>"5a772e0534b073083c00789d1ddd206c"</CS:getctag> </prop> <status>HTTP/1.1 200 OK</status> </propstat> </response> </multistatus>
With Google, I get:
<?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:response> <d:href>/carddav/v1/principals/<my-email-address>/lists/default/</d:href> <d:propstat> <d:status>HTTP/1.1 200 OK</d:status> </d:propstat> </d:response> </d:multistatus>
It doesn't change if change the Depth to 0, or if I use XML's better namespacing mechanism in propfind.xml (specify the namespaces in the top-level element with prefixes, and use the prefixes inside)