2015-01-08 76 views
1

我想通過caldav協議檢索基於它的UID的特定ICloud事件。Icloud日曆通過caldav通過uid檢索事件

<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> 
<D:prop> 
    <D:getetag/> 
    <C:calendar-data> 
    <C:comp name="VCALENDAR"> 
     <C:prop name="VERSION"/> 
     <C:comp name="VEVENT"> 
     <C:prop name="SUMMARY"/> 
     <C:prop name="UID"/> 
     <C:prop name="DTSTART"/> 
     <C:prop name="DTEND"/> 
     <C:prop name="DURATION"/> 
     <C:prop name="RRULE"/> 
     <C:prop name="RDATE"/> 
     <C:prop name="EXRULE"/> 
     <C:prop name="EXDATE"/> 
     <C:prop name="RECURRENCE-ID"/> 
     </C:comp> 
     <C:comp name="VTIMEZONE"/> 
    </C:comp> 
    </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>$$EVENT_UID$$</C:text-match> 
     </C:prop-filter> 
    </C:comp-filter> 
    </C:comp-filter> 
</C:filter> 

當我更換C:丙濾波器名稱=「UID」由C:丙濾波器名稱=「發明內容」,請求正常工作與一個204,但我嘗試用UID,我得到了一個403 Forbidden。

+0

有點偏離主題,但只是爲了確保:請記住,文本匹配執行* substring *搜索。因此,如果您執行上述操作,請確保您進一步篩選查詢結果以獲得完全匹配。 (例如,一個UID可能是AA而另一個是AABB)。 – hnh

+0

這也不能很好地回答你的問題,但它可能會幫助你:如果你在嘗試使用PROPFIND或類似的方法列出事件後獲取事件,我會通過''''來完成。與通過UID進行提取和查詢不同,它通常可以保證所有未完全破解的服務器都能支持。 –

回答

1

iCloud不支持大範圍的日曆查詢請求。您可能會被卡住,首先下載整個集合。

0

您用於發佈請求的URL必須包含ics文件鏈接以及請求中的UID。