I am currently developing a carddav / caldav server. I can already communicate with lots of clients on windows / windows phone / android. Now I tryed syncing with iOS. Addressbook syncing works fine but the calendar app behaves strange. It syncs all the calendars and appointments and shows them correctly.It even links the participants in an event to the contact in the addressbook. But once syncing is finished, the calendars and appointments disappear completely. Anybody has a hint?
My testdevice is an IPad 2 with iOS 8.3 (12F69).
Here is the communication. I am leaving out the requests without Authorization Header. Also i had to edit the hostname but it is the same during all requests.
I don't answer a lot of the properties iOS asks. But since all appointments show correctly during a short time, these shouldn't be needed. Also a lot of them are not part of the caldav specification (but still placed in the same xmlns?).
PROPFIND host:9998/.well-known/caldav HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) accountsd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 0
Connection: keep-alive
Authorization: Basic ZmdoZ2poZ2g6a2dmZ2hqaA==
Content-Length: 181
Brief: t
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<A:current-user-principal/>
<A:principal-URL/>
<A:resourcetype/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 791
Date: Tue, 15 Dec 2015 08:25:22 GMT
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:current-user-principal>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:current-user-principal>
<d:principal-url>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:principal-url>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
OPTIONS http://host:9998/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/ HTTP/1.1
Host: host:9998
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Accept-Encoding: gzip, deflate
Accept: */*
Content-Length: 0
Accept-Language: de-de
Connection: keep-alive
User-Agent: iOS/8.3 (12F69) accountsd/1.0
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 0
Date: Tue, 15 Dec 2015 08:25:22 GMT
PROPFIND host:9998/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/ HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 0
Connection: keep-alive
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Content-Length: 743
Brief: t
<A:propfind xmlns:A="DAV:">
<A:prop>
<B:calendar-home-set xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<B:calendar-user-address-set xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<A:current-user-principal/>
<A:displayname/>
<C:dropbox-home-URL xmlns:C="http://calendarserver.org/ns/"/>
<C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
<C:notification-URL xmlns:C="http://calendarserver.org/ns/"/>
<A:principal-collection-set/>
<A:principal-URL/>
<A:resource-id/>
<B:schedule-inbox-URL xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<B:schedule-outbox-URL xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<A:supported-report-set/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 958
Date: Tue, 15 Dec 2015 08:25:48 GMT
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
<d:propstat>
<d:prop>
<d:displayname>Robert Glaser</d:displayname>
<d:current-user-principal>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:current-user-principal>
<cal:calendar-home-set>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/</d:href>
</cal:calendar-home-set>
<d:principal-url>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:principal-url>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
PROPFIND http://host:9998/.well-known/carddav/DEVELOPMENT/principals/Robert%20Glaser/ HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 0
Connection: keep-alive
Authorization: Basic Z2poZ2o6amhqamo=
Content-Length: 439
Brief: t
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<D:addressbook-home-set xmlns:D="urn:ietf:params:xml:ns:carddav"/>
<D:directory-gateway xmlns:D="urn:ietf:params:xml:ns:carddav"/>
<A:displayname/>
<C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
<A:principal-collection-set/>
<A:principal-URL/>
<A:resource-id/>
<A:supported-report-set/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 795
Date: Tue, 15 Dec 2015 08:25:48 GMT
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/carddav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
<d:propstat>
<d:prop>
<d:displayname>Robert Glaser</d:displayname>
<card:addressbook-home-set>
<d:href>/.well-known/carddav/DEVELOPMENT/addressbooks/</d:href>
</card:addressbook-home-set>
<d:principal-url>
<d:href>/.well-known/carddav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:principal-url>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
PROPFIND http://host:9998/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/ HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 1
Connection: keep-alive
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Content-Length: 2097
Brief: t
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<A:add-member/>
<C:allowed-sharing-modes xmlns:C="http://calendarserver.org/ns/"/>
<F:autoprovisioned xmlns:F="http://apple.com/ns/ical/"/>
<E:bulk-requests xmlns:E="http://me.com/_namespace/"/>
<F:calendar-color xmlns:F="http://apple.com/ns/ical/"/>
<B:calendar-description xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<B:calendar-free-busy-set xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<F:calendar-order xmlns:F="http://apple.com/ns/ical/"/>
<B:calendar-timezone xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<A:current-user-privilege-set/>
<B:default-alarm-vevent-date xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<B:default-alarm-vevent-datetime xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<A:displayname/>
<C:getctag xmlns:C="http://calendarserver.org/ns/"/>
<F:language-code xmlns:F="http://apple.com/ns/ical/"/>
<F:location-code xmlns:F="http://apple.com/ns/ical/"/>
<A:owner/>
<C:pre-publish-url xmlns:C="http://calendarserver.org/ns/"/>
<C:publish-url xmlns:C="http://calendarserver.org/ns/"/>
<C:push-transports xmlns:C="http://calendarserver.org/ns/"/>
<C:pushkey xmlns:C="http://calendarserver.org/ns/"/>
<A:quota-available-bytes/>
<A:quota-used-bytes/>
<F:refreshrate xmlns:F="http://apple.com/ns/ical/"/>
<A:resource-id/>
<A:resourcetype/>
<B:schedule-calendar-transp xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<B:schedule-default-calendar-URL xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<C:source xmlns:C="http://calendarserver.org/ns/"/>
<C:subscribed-strip-alarms xmlns:C="http://calendarserver.org/ns/"/>
<C:subscribed-strip-attachments xmlns:C="http://calendarserver.org/ns/"/>
<C:subscribed-strip-todos xmlns:C="http://calendarserver.org/ns/"/>
<B:supported-calendar-component-set xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<B:supported-calendar-component-sets xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<A:supported-report-set/>
<A:sync-token/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 2984
Date: Tue, 15 Dec 2015 08:25:49 GMT
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<cs:getctag/>
<d:displayname>Robert Glaser</d:displayname>
<d:current-user-privilege-set>
<d:privilege>
<d:all/>
</d:privilege>
<d:privilege>
<d:read/>
</d:privilege>
<d:privilege>
<d:read-acl/>
</d:privilege>
<d:privilege>
<d:write/>
</d:privilege>
<d:privilege>
<d:write-content/>
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set/>
</d:privilege>
</d:current-user-privilege-set>
<d:owner>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:owner>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
<cal:calendar/>
</d:resourcetype>
<cs:getctag>669801837942</cs:getctag>
<d:displayname>Alle Termine</d:displayname>
<d:supported-report-set>
<d:supported-report>
<d:report>
<cal:calendar-multiget/>
</d:report>
</d:supported-report>
<d:supported-report>
<d:report>
<cal:calendar-query/>
</d:report>
</d:supported-report>
</d:supported-report-set>
<d:current-user-privilege-set>
<d:privilege>
<d:all/>
</d:privilege>
<d:privilege>
<d:read/>
</d:privilege>
<d:privilege>
<d:read-acl/>
</d:privilege>
<d:privilege>
<d:write/>
</d:privilege>
<d:privilege>
<d:write-content/>
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set/>
</d:privilege>
</d:current-user-privilege-set>
<cal:supported-calendar-component-set>
<cal:comp name="VEVENT"/>
<cal:comp name="VTIMEZONE"/>
</cal:supported-calendar-component-set>
<d:owner>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
</d:owner>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
PROPPATCH http://host:9998/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/ HTTP/1.1
Host: host:9998
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Accept-Encoding: gzip, deflate
Content-Type: text/xml
Accept-Language: de-de
Content-Length: 198
Accept: */*
Connection: keep-alive
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
<?xml version="1.0" encoding="UTF-8"?>
<A:propertyupdate xmlns:A="DAV:"><A:set><A:prop><F:calendar-order xmlns:F="http://apple.com/ns/ical/">0</F:calendar-order></A:prop></A:set></A:propertyupdate>
HTTP/1.1 501 Not Implemented
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1029
Date: Tue, 15 Dec 2015 08:25:49 GMT
Connection: close
<!DOCTYPE html><html><head><title>Apache Tomcat/8.0.24 - Error report</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> </head><body><h1>HTTP Status 501 - </h1><div class="line"></div><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server does not support the functionality needed to fulfill this request.</u></p><hr class="line"><h3>Apache Tomcat/8.0.24</h3></body></html>
PROPFIND http://host:9998/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/ HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 0
Connection: keep-alive
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Content-Length: 267
Brief: t
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<B:calendar-user-address-set xmlns:B="urn:ietf:params:xml:ns:caldav"/>
<A:displayname/>
<C:email-address-set xmlns:C="http://calendarserver.org/ns/"/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 500
Date: Tue, 15 Dec 2015 08:25:49 GMT
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/principals/Robert%20Glaser/</d:href>
<d:propstat>
<d:prop>
<d:displayname>Robert Glaser</d:displayname>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
MKCALENDAR http://host:9998/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/B39676BE-F124-475E-9ED2-B8756951DF29/ HTTP/1.1
Host: host:9998
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Accept-Encoding: gzip, deflate
Content-Type: text/xml
Accept-Language: de-de
Content-Length: 1046
Accept: */*
Connection: keep-alive
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
<?xml version="1.0" encoding="UTF-8"?>
<B:mkcalendar xmlns:B="urn:ietf:params:xml:ns:caldav">
<A:set xmlns:A="DAV:">
<A:prop>
<F:calendar-order xmlns:F="http://apple.com/ns/ical/">0</F:calendar-order>
<B:calendar-timezone>BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZNAME:MESZ
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
DTSTART:19810329T020000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZNAME:MEZ
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
DTSTART:19961027T030000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
</B:calendar-timezone>
<A:displayname>Erinnerungen</A:displayname>
<B:calendar-free-busy-set>
<NO/>
</B:calendar-free-busy-set>
<B:supported-calendar-component-set>
<B:comp name="VTODO"/>
</B:supported-calendar-component-set>
</A:prop>
</A:set>
</B:mkcalendar>
HTTP/1.1 501 Not Implemented
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1029
Date: Tue, 15 Dec 2015 08:25:49 GMT
Connection: close
<!DOCTYPE html><html><head><title>Apache Tomcat/8.0.24 - Error report</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> </head><body><h1>HTTP Status 501 - </h1><div class="line"></div><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server does not support the functionality needed to fulfill this request.</u></p><hr class="line"><h3>Apache Tomcat/8.0.24</h3></body></html>
PROPFIND http://host:9998/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/ HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 0
Connection: keep-alive
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Content-Length: 181
Brief: t
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<C:getctag xmlns:C="http://calendarserver.org/ns/"/>
<A:sync-token/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Content-Length: 507
Date: Tue, 15 Dec 2015 08:25:51 GMT
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/</d:href>
<d:propstat>
<d:prop>
<cs:getctag>669801837942</cs:getctag>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
PROPFIND host:9998/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/ HTTP/1.1
Host: host:9998
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Accept: */*
Content-Type: text/xml
Prefer: return=minimal
Depth: 1
Connection: keep-alive
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Content-Length: 145
Brief: t
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<A:getcontenttype/>
<A:getetag/>
</A:prop>
</A:propfind>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml
Transfer-Encoding: chunked
Date: Tue, 15 Dec 2015 08:25:54 GMT
2000
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/</d:href>
<d:propstat>
<d:prop/>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/0075712608923743A35868DB6A589A31.ics</d:href>
<d:propstat>
<d:prop>
<d:getetag>1241532994</d:getetag>
<d:getcontenttype>text/calendar</d:getcontenttype>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
REPORT http://host:9998/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/ HTTP/1.1
Host: host:9998
Authorization: Basic bW5iam5ia2tqaHZmOm1oZ2o=
Accept-Encoding: gzip, deflate
Content-Type: text/xml
Accept-Language: de-de
Content-Length: 7677
Accept: */*
Connection: keep-alive
User-Agent: iOS/8.3 (12F69) dataaccessd/1.0
<?xml version="1.0" encoding="UTF-8"?>
<B:calendar-multiget xmlns:B="urn:ietf:params:xml:ns:caldav">
<A:prop xmlns:A="DAV:">
<A:getetag/>
<B:calendar-data/>
<C:created-by xmlns:C="http://calendarserver.org/ns/"/>
<C:updated-by xmlns:C="http://calendarserver.org/ns/"/>
<B:schedule-tag/>
</A:prop>
<A:href xmlns:A="DAV:">/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/50EAF942E0AB35A1B81792F7AAB6027E.ics</A:href>
</B:calendar-multiget>
HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Allow: OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, REPORT
DAV: 1, 3, extended-mkcol, addressbook, access-control, calendar-access
MS-Author-Via: DAV
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Accept-Ranges: bytes
Content-Type: text/xml;charset=utf-8
Date: Tue, 15 Dec 2015 08:25:58 GMT
Content-Length: 58259
<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>/.well-known/caldav/DEVELOPMENT/calendars/Robert%20Glaser/Alle%20Termine/50EAF942E0AB35A1B81792F7AAB6027E.ics</d:href>
<d:propstat>
<d:prop>
<d:getetag>1447948122</d:getetag>
<cal:calendar-data>BEGIN:VCALENDAR
CALSCALE:GREGORIAN
VERSION:2.0
PRODID:-//DE/RND/DAV/CALDAV
BEGIN:VEVENT
DTSTAMP:20151215T082555Z
CLASS:PUBLIC
DESCRIPTION:
DTSTART:20151120T070000Z
DTEND:20151120T073000Z
SUMMARY:NeuerMehrTeilnehmerTermin
TRANSP:OPAQUE
ATTENDEE;CN=Robert Glaser;PARTSTAT=ACCEPTED:mailto:[email protected]
RESOURCES:Audi A6
UID:50EAF942E0AB35A1B81792F7AAB6027E
CREATED:20151119T154839Z
LAST-MODIFIED:20151119T154839Z
END:VEVENT
END:VCALENDAR
</cal:calendar-data>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
After this, there are 4 more REPORT requests to get all the appointments. Afterwards, there is a propfind request in the root directory of the host which i can't post because of the 30.000 characters limit. I can't answer this request since it doesn't reach my servlet.
Thanks for any help.
Here's my notes:
.well-known
is weird. The .well-known
path is meant to just redirect to the real location. It shouldn't break, but it's possible.But I think the real culprit is that you don't support either the sync-token or the ctag. Client's should work fine without them, but the reality that I've seen is that some don't. I feel that this is the most likely problem, because the issue you describe has to do with syncing after the initial sync. Virtually any client will use the ctag (and many now use the sync-token) to figure out if anything changed in a collection.