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 url 和 etag到 DoDELETERequest(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的主要内容,如果未能解决你的问题,请参考以下文章