2017-01-23 13 views
0
<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> 

안녕하세요, 캘린더를 사용하여 iCloud 캘린더에서 바쁜 시간 (시간 범위 기준)을 검색하고 있습니다. "REPORT"메소드가있는 달력 쿼리를 사용하고 있습니다. XML이 시간 범위 내에서 모든 캘린더에 바쁜 시간을 제공합니다. 그러나 때로는 특정 캘린더에 바쁜 시간을주지 않습니다. 3 개의 캘린더를 가지고 있다고 가정 해보십시오. 때로는 3 개의 캘린더 모두에 바쁜 시간을, 때로는 2 개의 캘린더에만 바쁜 시간을줍니다. 통화 중일 경우 재 시도하면 7-8 재시도 후 사용량이 많아집니다. 그러나 때로는 7-8 회 재시도 후에도 제공하지 않습니다. 무슨 일 이니?때때로 캘린더에 iCloud (Caldav 사용)에서 바쁜 시간이 검색되지 않습니다.

+0

안녕하세요, 누군가 나를 도와 드릴까요? 일부 캘린더의 이벤트가 검색되지 않은 이유는 무엇입니까? –

+0

일부 일정에서는 통화 중을 사용하지 않습니다. –

답변

0

나는 그것이 왜 일어나고 있는지 이유를 찾지 못했습니다. 하지만 바쁜 시간을 검색하는 과정을 변경하여 모든 캘린더에서 바쁜 시간을 가져 왔습니다. 이전에이 요청을 URL (https://PXX-caldav.icloud.com/token/calendars)로 보내고 특정 일정에 대해 일관되게 작동하지 않았습니다.

새로운 프로세스 레 :

1 단계 : 명중이뿐만 아니라 사람들을 위해 (달력에서 당신에게 시간 범위 내의 모든 이벤트의 URL을 제공하는 내가 할 수없는 받았 느니라 https://PXX-caldav.icloud.com/token/calendars/calendarId에서 동일한 요청 바쁜 시간을 검색). 여기에서 id 이벤트 ID (캘린더의 ID)를 가진 캘린더 이벤트를 제공합니다. 그것은 나에게 XML 다음 뭔가 XML을 제공합니다 : -

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

지금 당신이 모든 URL을 검색하기 위해 XML을 구문 분석해야합니다.

STEP2 : 모든 URL을 가지고, 당신이 요청을 다음 URL에서 데이터를 검색하고 그들에게 바쁜 시간을 표시하는 동일한 URL에서 해당 URL을 갖는 단일 멀티 얻을 쳐야 후.

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> 

세 가지 이벤트 모두에 대한 데이터를 제공합니다. 이렇게하면 모든 달력에서 바쁜 시간을 검색 할 수 있습니다. 여러 캘린더에서 이벤트를 검색해야하는 경우 모든 캘린더에 대해이 두 단계를 반복해야합니다.