连接到CalDAV服务器后,您可以查询它是否支持哪些服务。例如,在Lightning连接到CalDAV服务器之后,如果该服务器通告任务支持,它将只允许您创建Task对象。
不幸的是,一些服务器(例如AppSuite,Yahoo)确实支持任务,但显然没有正确宣传这一事实,因此严格的PIM客户端(例如Lightning)不会与它们通话。
CalDAV应该如何(确切地)这样做?
我已阅读https://wiki.wocommunity.org/display/~probert/CalDAV+and+CardDAV+handshake解释了CalDAV握手和连接,并确定了连接后OPTIONS调用返回的DAV功能列表。我们的CalDAV服务器返回以下列表:
1, 2, 3, access-control, calendar-access, addressbook, extended-mkcol, calendar-auto-schedule, calendar-schedule, calendarserver-sharing, calendarserver-principal-search, calendarserver-principal-property-search, calendarserver-private-comments, extended-mkcol, calendar-managed-attachments
但是,我找不到任何标准功能名称的详尽列表,也无法找到支持任务的预期名称。
任何人都可以对此有所了解吗?
答案 0 :(得分:2)
功能保存在任何给定日历的supported-calendar-component-set
属性中。如果未设置此属性,则应假定它支持所有内容。
要获取组件集,请使用此方法(使用正确的日历URL和身份验证):
PROPFIND https://myserver/caldav/url/12345
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<C:supported-calendar-component-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>
</A:prop>
</A:propfind>
返回
<D:multistatus>
<D:response>
<D:href>/caldav/3382/</D:href>
<D:propstat>
<D:prop>
<supported-calendar-component-set>
<CAL:comp name="VEVENT"/>
</supported-calendar-component-set>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
在supported-calendar-component-set部分中,查找VEVENT(支持日历事件),VTASK(支持任务),VJOURNAL等。因此,在上面的示例中,支持Calendar事件,但不支持Tasks。 / p>