谷歌CALDAV忽略过滤选项

时间:2016-04-20 16:01:56

标签: calendar google-api google-calendar-api caldav

是否有任何文档为什么google caldav api会忽略此请求。

<?xml version="1.0" encoding="UTF-8"?>
<C:calendar-query xmlns:d="DAV:"     xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:A="http:/    /apple.com/ns/ical/">
 <d:prop>
  <d:getetag/>
  <C:calendar-data/>
 </d:prop>
 <C:filter>
  <C:comp-filter name="VCALENDAR">
   <C:comp-filter name="VEVENT">
    <C:prop-filter name="UID">
     <C:text-match collation="i;octet">xxxxxxxxxxxx</C:text-match>
    </C:prop-filter>
   </C:comp-filter>
  </C:comp-filter>
 </C:filter>

它返回每个事件,但它应该只返回我在过滤器中请求的那个。

我只能用

过滤事件
<C:time-range start="20160326T230000Z" end="20160430T220000Z"/>

但其他一切都被忽略了。

2 个答案:

答案 0 :(得分:0)

我发现另一个解决方案只能通过使用caldav api google的uid获取一个事件。

我使用事件的href url,例如$ href =“https://apidata.googleusercontent.com/caldav/v2/IDCalendar/events/**uid.**ics

我查询:

<?xml version="1.0" encoding="utf-8" ?>  
<C:calendar-multiget xmlns="DAV:"mlns:C="urn:ietf:params:xml:ns:caldav">
<prop><getetag/><C:calendar-data/></prop>
<href>$href</href>
</C:calendar-multiget>

我只获得UID事件:)。

答案 1 :(得分:0)

但是Google CalDAV支持日历多重获取,您可以在其中使用相同的网址格式

https://icalendar.org/CalDAV-Access-RFC-4791/7-9-caldav-calendar-multiget-report.html

示例:

<?xml version='1.0' encoding='utf-8'?>

<C:calendar-multiget xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CS="http://calendarserver.org/ns/" xmlns:D="DAV" xmlns:I="http://apple.com/ns/ical/">
  <ns0:prop xmlns:ns0="DAV:">
  <ns0:getetag/>
  <C:calendar-data/>
  </ns0:prop>

  <ns0:href xmlns:ns0="DAV:">/caldav/v2/[calendar_id]/events/[UID]</ns0:href>

</C:calendar-multiget>

有回应

<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:caldav="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:ical="http://apple.com/ns/ical/">
 <D:response xmlns:carddav="urn:ietf:params:xml:ns:carddav" xmlns:cm="http://cal.me.com/_namespace/" xmlns:md="urn:mobileme:davservices">
  <D:href>/caldav/v2/[calendarID]/events/[UID]</D:href>
  <D:propstat>
   <D:status>HTTP/1.1 200 OK</D:status>
   <D:prop>
    <D:getetag>"63701474571"</D:getetag>
    <caldav:calendar-data>BEGIN:VCALENDAR
.....
</caldav:calendar-data>
   </D:prop>
  </D:propstat>
 </D:response>
</D:multistatus>