iCloud日历删除事件请求不适用于caldav

Posted

技术标签:

【中文标题】iCloud日历删除事件请求不适用于caldav【英文标题】:iCloud calendar Delete Event Request not working with caldav 【发布时间】:2016-05-12 11:11:53 【问题描述】:

我正在使用 caldav-client-v2.php 库从 iCloud 日历中读取日历事件,

GetEvents() 函数返回日历数据数组,其中包含传递的 ics urletagDoDELETERequest(href,etag) 删除事件, 这适用于 owncloud 日历,但是当我尝试为 iCloud 执行此操作时,它不会删除事件并将错误返回为“错误的实体标签”标签是这样的 FT=-@RU=5c162550-1ccc-4821-80d6-e2fab587c348@S=1685

我尝试将 5c162550-1ccc-4821-80d6-e2fab587c348 传递给函数,但我得到了同样的错误。 caldav 服务器是否返回错误的 etag 或者我怎样才能让它工作?

【问题讨论】:

【参考方案1】:

ETag 被定义为带引号的字符串,请参阅RFC 7232, section 2.3。它说:

ETag       = entity-tag

entity-tag = [ weak ] opaque-tag
weak       = %x57.2F ; "W/", case-sensitive
opaque-tag = DQUOTE *etagc DQUOTE
etagc      = %x21 / %x23-7E / obs-text
           ; VCHAR except double quotes, plus obs-text

这也是您从服务器接收 ETag 的方式。确保您发送的 ETag 与您收到的完全一样。特别是不要删除任何引号。

所以尝试传递"FT=-@RU=5c162550-1ccc-4821-80d6-e2fab587c348@S=1685"

【讨论】:

是的,先生,这是真的,libray 正在使用 preg_replace 删除 etag 引号,

以上是关于iCloud日历删除事件请求不适用于caldav的主要内容,如果未能解决你的问题,请参考以下文章

CalDAV 请求 gGt iCloud 日历事件

CALDAV 在 ICLOUD 中编辑/删除多个事件

访问 iCloud 日历事件 - macOS 应用程序

ICloud Caldav连接获取日历

iCloud Caldav 连接以获取日历

iOS EKEvent Store 在循环中重新创建 iCloud 日历,不会保存本地。