有时忙的时候不是从iCloud中(使用的CalDAV)为特定的日历

问题描述:

<C:calendar-query xmlns:D='DAV:' 
       xmlns:C='urn:ietf:params:xml:ns:caldav'> 
            <D:prop> 
             <D:getetag/> 
           <C:calendar-timezone xmlns:D='DAV:' xmlns:C='urn:ietf:params:xml:ns:caldav'></C:calendar-timezone> 
             <C:calendar-data> 
             <C:expand start='20170116T031008Z' 
               end='20170131T031008Z'/> 
             <C:comp name='VCALENDAR'> 
              <C:prop name='VERSION'/> 
              <C:comp name='VEVENT'> 
              <C:prop name='SUMMARY'/> 
              <C:prop name='DESCRIPTION'/> 
              <C:prop name='STATUS'/> 
               <C:prop name='TRANSP'/> 
               <C:prop name='ATTENDEE'/> 
              <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> 
             </C:calendar-data> 
            </D:prop> 
            <C:filter> 
     <C:comp-filter name='VCALENDAR'> 
     <C:comp-filter name='VEVENT'> 
      <C:time-range start='20170116T031008Z' 
         end='20170131T031008Z'/> 
     </C:comp-filter> 
     </C:comp-filter> 
    </C:filter> 
            </C:calendar-query> 

嗨检索,我使用的CalDAV扩展检索的iCloud日历繁忙时间(由时间范围)。我正在使用带有“REPORT”方法的日历查询。它使XML在该时间范围内的所有日历都有繁忙的时间。但有时它不会给特定日历带来繁忙的时间。假设我有3个日历,所以有时它会为所有3个日历提供繁忙时间,有时仅为2个日历提供繁忙时间(通过保留相同日历)。如果我重试繁忙,那么它会在7-8重试后给出繁忙时间。但有时候甚至在7-8次重试后都不会提供。发生什么事?有时忙的时候不是从iCloud中(使用的CalDAV)为特定的日历

+0

嘿,有人能帮我解决吗?为什么某些日历的活动未被检索? –

+0

对于某些日历,忙不会被拉。 –

我没有找到它为什么发生的原因。但是我已经改变了繁忙时间检索的过程,以便从所有日历带来繁忙的时间。以前,我正在向URL - https://PXX-caldav.icloud.com/token/calendars发送此请求,该请求对于某些特定的日历不一致。

新流程 - :

第1步:击中https://PXX-caldav.icloud.com/token/calendars/calendarId这给你的时间范围内的所有事件的网址,日历(对于那些也为我憎恶埃及人,不能将同一请求检索繁忙时间)。在这里,它通过id为calendarId的日历(日历的ID)提供事件。它给了我下面的XML xml - :

<href>/token/calendars/calendarId/event1Id.ics</href> 
<href>/token/calendars/calendarId/event2Id.ics</href> 
<href>/token/calendars/calendarId/event3Id.ics</href> 

现在你必须解析XML检索所有的网址。

第2步:之后,你有所有的网址,你必须击中具有这些网址的单个多点获取请求,在同一网址从这些网址检索数据并显示为繁忙时间。

URL -: https://PXX-caldav.icloud.com/token/calendars/calendarId 
Request -: 
<C:calendar-multiget 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='DESCRIPTION'/> 
                  <C:prop name='STATUS'/> 
                  <C:prop name='TRANSP'/> 
                  <C:prop name='ATTENDEE'/> 
                  <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> 
               </C:calendar-data> 
              </d:prop><d:href>/token/calendars/calendarId/event1Id.ics</d:href> 
    <d:href>/token/calendars/calendarId/event2Id.ics</d:href> 
    <d:href>/token/calendars/calendarId/event3Id.ics</d:href> 
             </C:calendar-multiget> 

它给你所有三个事件的数据。这有助于您从每个日历中检索繁忙时间。如果您必须从多个日历中检索事件,则必须为每个日历重复这两个步骤。