首页 文章

使用PHP客户端的PUT请求向iCal添加新事件?

提问于
浏览
1

我正在尝试将PHP编写的日历与Kerio Connect日历(iCal)同步 . 我没有连接到日历和获取事件的问题 . 但是当我尝试PUT任何新事件时,似乎添加了空事件,例如:

我的请求:

Headers :PUT /日历/ localhost / marcin / Calendar HTTP / 1.1授权:基本bWFyY2luOnJob21hbg ==主机:localhost:1212 If-None-Match:*内容类型:text / icalendar内容长度:367

请求:开始:VCALENDAR PRODID: - // Kerio Technologies // Kerio Connect // EN方法:发布版本:2.0 X-VERSION-KMS:6.2.0 BEGIN:VEVENT DTSTART; VALUE = DATE:20120528T163000 DTEND; VALUE = DATE: 20120528T170000序列:0摘要:测试事件类别:公共优先级:5移位:OPAQUE X-MICROSOFT-CDO-BUSYSTATUS:忙X标签:0结束:VEVENT END:VCALENDAR

响应:HTTP / 1.1 201创建允许:OPTIONS,TRACE,GET,HEAD,DELETE,PUT,COPY,MOVE,PROPFIND,PROPPATCH,SEARCH,SUBSCRIBE,UNSUBSCRIBE,POLL,BDELETE,BCOPY,BMOVE,BPROPPATCH,BPROPFIND,LOCK,UNLOCK连接:关闭内容长度:0内容类型:text / html日期:2012年5月27日星期日13:33:04 GMT ETag:1f353abd967f4700b8dc18f4d4775ff30000003400000001位置:/ calendars / localhost / marcin / Calendar / Repl-UID:ResourceTag:

无论我提出请求的日期/主题,创建的事件总是如下所示:主题:日期:太阳,2012年5月27日15:33:04 0200内容类型:文本/日历;成分= “VEVENT”;方法= “PUBLISH”; charset =“utf-8”Content-Transfer-Encoding:8bit

开始:VCALENDAR PRODID: - // Kerio Technologies // Kerio Connect // EN方法:出版版本:2.0 X-VERSION-KMS:6.2.0开始:VEVENT DTSTAMP:20120527T133304Z UID:10a69ad8-07f1-4831-a015-4de3dac78351 TRANSP :OPAQUE X-MICROSOFT-CDO-BUSYSTATUS:BUSY END:VEVENT END:VCALENDAR

所以没有主题,也没有日期(DTSTART,DTEND);我试图发送空请求:BEGIN:VCALENDAR BEGIN:VEVENT END:VEVENT END:VCALENDAR

结果是一样的 .

我是calDAV的新手,我在最近几天试图解决这个问题 . 如果有人可以帮助我并告诉我我做错了什么,那就太棒了 .

最好的问候马丁

1 回答

  • 1

    我也遇到了确切的问题 . 我推动活动但是kerio没有显示主题或日期 . 这是我发现的工作(我只能卷曲工作,没有运气fsockopen):

    $uid = "test-12345"; // setting this to an existing uid updates event, a new uid adds event
    $url = $account['uri'].'/'.$uid.'.ics'; //http://mail.domain.com/calendars/DOMAIN/USER/Calendar/'.$uid.'.ics'
    $userpwd = $account['user'] .":". $account['pass'];
    $description = 'My event description here';
    $summary = 'My event title 1';
    $tstart = '201206015T000000Z';
    $tend = '20120616T000000Z';
    $tstamp = gmdate("Ymd\THis\Z");
    
    $body = <<<__EOD
    BEGIN:VCALENDAR
    VERSION:2.0
    BEGIN:VEVENT
    DTSTAMP:$tstamp
    DTSTART:$tstart
    DTEND:$tend
    UID:$uid
    DESCRIPTION:$description
    LOCATION:Office
    SUMMARY:$summary
    END:VEVENT
    END:VCALENDAR
    __EOD;
    
    $headers = array(
        'Content-Type: text/calendar; charset=utf-8',
        'If-None-Match: *',
        'Expect: ',
        'Content-Length: '.strlen($body),
    );
    
    $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);
    curl_close($ch);
    

相关问题