2013-09-28 31 views
0

我想实现一个管理共享icloud日历事件的脚本。 我已经在我的数据库中存储了几个事件,并且根据请求,我需要创建一个要在远程电话/ ipad上看到的事件等等。通过php curl更新icloud日历

感谢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); 

如果我不排除任何问题连接到的.ics产生更新的iCloud服务器和打印$身体功能的一部分我的本地日历(然后复制对icloud的更改)。 否则,如果我尝试连接到icloud它不会保存更改。 我试图更改服务器请求,但仍然无法离开它

回答

0

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

希望这会有所帮助。