【问题标题】:Update icloud calendar via php curl通过 php curl 更新 icloud 日历
【发布时间】:2013-10-04 15:54:13
【问题描述】:

我想实现一个脚本,用于管理共享 icloud 日历中的事件。 我已经在我的数据库中存储了几个事件,根据要求,我需要创建一个可以在远程电话/ipad 等设备上看到的事件。

感谢 Andy 和他的post 我没有问题将事件写入 icloud,但是当我尝试更新或删除事件时,icloud 似乎没有记录任何更改。 下面你可以找到我用来创建事件的部分函数

$body = <<<__EOD
BEGIN:VCALENDAR
PRODID:-// blablabla
VERSION:2.0
BEGIN:VEVENT
METHOD:UPDATE
UID:$id
DTSTAMP:$tstamp
ORGANIZER;CN=$organizer:MAILTO:$email
DTSTART:$tstart
DTEND:$tend
SUMMARY:$name
LOCATION:$location
DESCRIPTION:$description
SEQUENCE:2
END:VEVENT
END:VCALENDAR
__EOD;



$headers = array(
    'Content-Type: text/calendar; charset=utf-8',
    'If-None-Match: *',
    'Expect: ',
    'Content-Length: '.strlen($body),
);



// CONNESSIONE E SCRITTURA


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_exec($ch);

if(curl_errno($ch)) echo 'Curl error: '.curl_error($ch);

curl_close($ch);

如果我排除与 icloud 服务器的连接并打印 $body .ics 生成的更新没有任何问题我的本地日历(然后将更改复制到 icloud)。 否则,如果我尝试连接到 icloud,它将不会保存更改。 我尝试更改服务器请求,但仍然无法摆脱它

【问题讨论】:

    标签: php curl calendar icloud icalendar


    【解决方案1】:

    从标题中删除“If-None-Match: *”。这将允许您使用“PUT”命令更新到 iCal。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2014-06-23
      • 2015-03-06
      • 2019-12-18
      • 2018-03-16
      • 2012-11-16
      • 1970-01-01
      • 2012-07-09
      • 2013-01-03
      相关资源
      最近更新 更多