iCloud vcalendar多个事件

2024-09-26 18:00:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试一次在iCloud日历中插入多个事件。如果我使用这个vcalendar,一切正常:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
BEGIN:VEVENT
UID:12345678
DTSTART:20150213T170000Z
DTEND:20150213T180000Z
DTSTAMP:20150210T182145Z
SUMMARY:This is an event
END:VEVENT
END:VCALENDAR

但是,如果我将事件数量加倍,像这样,我会得到一个错误“unforbidden”。在

^{pr2}$

我将PUT请求发送到(当然,我是经过身份验证的,也是因为第一个请求成功):
https://p01-caldav.icloud.com:443/xxxxxxxx/calendars/work/xxxxxxx.ics

具体错误是:

<?xml version='1.0' encoding='UTF-8'?>
<error 
    xmlns='DAV:'>
    <valid-calendar-object-resource 
        xmlns='urn:ietf:params:xml:ns:caldav'/>
    </error>

对为什么会发生这种情况有什么想法,更重要的是:如何解决它?在


Tags: versionexample错误事件errorxmlendbegin
1条回答
网友
1楼 · 发布于 2024-09-26 18:00:52

类似于这个问题:Adding events to Davical server using Http request and DDay.iCal。在

iCloud日历是CalDAV服务器。在卡尔达夫 (RFC 4791 Section 4.1) 日历中的每个事件/待办事项都由不同的HTTP资源和 因此需要有一个不同的URL。在

您试图将多个事件放入一个资源中,这就是为什么 引发了“valid-calendar-object-resource”前置条件(不是有效的CalDAV 资源,因为它包含多个不属于重复集的VEVENTs节)。在

没有一个RFC的标准方法可以同时向DAV添加多个项 服务器,但有些(包括Apple CalendarServer和iCloud)支持此批量上载草稿: Calendar Server Bulk Change Requests for *DAV Protocols。在

基本上,在您的情况下,而不是执行PUT to/xx/calendars/work/abc.ics公司,试着发到/xx/calendars/work/。 然后,服务器将为您创建单独的日历子资源。在

附言:你的请求中还有一个额外的错误。对于多个事件(不是定期集的一部分)使用相同的UID(12345678)。您需要指定唯一的UID。在

相关问题 更多 >

    热门问题