현재 시스템에 대해 "간단한"읽기 전용 CALDAV 인터페이스를 구현하려고합니다. 그러나 동기화 프로토콜과 CALDAV 클라이언트는 나에게 두통을 안겨줍니다.다른 클라이언트의 CalDAV 프로토콜 동기화 및 동작
내가 사용하는 주요 테스트 클라이언트는 macos-calendar (sierra)입니다. 데이터의 초기 핸드 셰이크 (DAV 원리, 일정 조회) 및 초기로드가 작동 중입니다. 몇 가지 REPORT : 달력 쿼리 요청을 받았습니다. 초기로드 후 증분 동기화가 문제입니다.
통해 WebSync - 확장 (REPORT : 동기화 수집 및 동기화 토큰 소품) 여기 내 주요 문제는 서버에서 동기화 토큰을 프로비저닝하는 내 시스템의 사소한되지 않는 것입니다 두 가지가 있습니다. 변경 및 새 데이터는 문제가 아니지만 물리적 삭제 (사용자 컨텍스트에 아직 기록되지 않음) 및 그룹 및/또는 역할 할당의 범위가 변경되었습니다. 어쩌면 복잡한 경우에 sync-token을 무효화하고 sync-collection없이 클라이언트를 다시 설정하도록 고려해야합니까? 클라이언트에 보내는 일정 항목 ID를 유지하고 각 요청에 대한 존재 여부를 확인하고 필요한 경우 삭제/범위를 벗어난 일정 항목에서 찾을 수없는 항목으로 응답하는 것이 좋을 수 있습니다. 그러나 이것은 클라이언트의 상태를 서버에 저장한다는 의미 일 것이고, 서버는 정상적으로 작동하지 않으며 오류가 발생하기 쉽습니다.
기본 프로토 콜 동기화 (달력에 대한 응답 : calendar-query 및 propfind (depth = 1) 요청에 대한 webdav-sync 활성 없음) 이것은 새로운 데이터와 변경된 데이터에 대해 원칙적으로 이미 작동합니다. 그러나 macos-calendar는 수집 응답에 포함되지 않는 항목을 제거하지 않습니다 (깊이 = 1로 propfind). 프로토콜에 따르면 클라이언트는 삭제 된 항목을 결정하고 제거해야하지만 내 경우에는 그렇지 않습니다. 어떤 아이디어가 있습니까? 내 시스템의 경우 현재 성능이 이상적인 것은 아니지만이 방법을 사용하는 것이 이상적입니다. IOS-달력
나는 또 다른 문제에 직면
초기 핸드 쉐이크가 어떻게 든 네트워크의 요청으로 작동하고 오는하고 대답한다.
그러나 MKCALENDAR 요청이오고 있습니다 (항목에 대한 캘린더 쿼리 또는 propfind 대신). 403 응답과 함께 옵션 응답의 Allow-header에도 제공하지 않습니다. 요청은 다음과 같습니다
MKCALENDAR /services/cal/_userid/220EDB4A-F00C-41C9-B78F-10781BBA77E4/ HTTP/1.1 Host: 127.0.0.1:8003 Content-Type: text/xml User-Agent: iOS/10.0.1 (14A403) dataaccessd/1.0 <?xml version="1.0" encoding="UTF-8"?> <B:mkcalendar xmlns:B="urn:ietf:params:xml:ns:caldav"> <A:set xmlns:A="DAV:"> <A:prop> <B:calendar-free-busy-set> <NO/> </B:calendar-free-busy-set> <D:calendar-order xmlns:D="http://apple.com/ns/ical/">1</D:calendar-order> <A:displayname>Kalender</A:displayname> <B:calendar-timezone>BEGIN:VCALENDAR ...deleted.... </B:calendar-timezone> <B:supported-calendar-component-set> <B:comp name="VEVENT"/> </B:supported-calendar-component-set> </A:prop> </A:set> </B:mkcalendar>
아무것도 이후에 발생하지 않습니다.
누구에게도이 문제가 발생합니까? 왜 ios-calendar는 자원 유형으로 calendar-collection을 가지고 있지만 mkcalendar를 시도합니까? 썬더 버드 번개와
초기 핸드 쉐이크는
항목에 대한 PROPFIND 및 multiget 요청을하고있다 iCal의-항목에 대한 답변.
그러나 그들은 표시되지 않고 오류 로그에 내가 나타납니다
경고 : CalDAV를 : CalDAV를 : 실패를 가져 오기 오류 : 얻었다 상태 디버깅 프록시 달력 데이터를 가져 오는 (200), 제로
(독일어 텍스트 : 오류 코드 : 0X80004005) 디버그 프록시 : 경고 : 일정에 대한 오류 데이터를 읽는. 그러나이 오류 때문에 프로그램을 계속하려고 아마도 무시할 수있다. 오류 코드 : 0X80004005. 설명 : CalDAV를 : 오류 : 일정에 대한 오류 데이터를 읽는 : 경고 디버그 프록시 상태가 디버깅 프록시 (200 개) 일정 데이터, 제로
(: 오류 코드 READ_FAILED 독일어 텍스트)을 가져 오는 얻었다. 그러나이 오류 때문에 프로그램을 계속하려고 아마도 무시할 수있다. 오류 코드 : READ_FAILED. 설명 : - 그것은 어떤 인코딩 문제 일 수 있습니다 맥 OS 캘린더에서 작업하지만
HTTP 채널 수신기 OnDataAvailable 계약 위반
비슷한 반응은?
어떤 힌트는 매우 감사합니다!
DAV 서버를 개발하는 동안 SOP는 다음과 같이 보입니다. 1. 사양을 읽습니다. 2. 사양 해석에 해당하는 서버를 구현하십시오. 3. N 개의 실제 클라이언트로 테스트하여 N 개의 사양 해석을 제공합니다. 4. 희망을 포기하십시오. 5. 모든 것을 버리고 기존 구현을 복사하십시오. – CodeCaster
모든 심각성은 제외 : 이것은 너무 광범위하고 답할 수 없습니다. 문제가 발생한 정확한 문제를 해결하기 위해 관련 정보가 충분하지 않습니다. 응답을 주셔서 감사합니다. – CodeCaster
! 나는 당신이이 문제를 자세히 추적 할 수 없다는 것에 대해 분명하지만, 언급 한 나의 가정이 옳다면, 또는 이미 그 안에 몇 가지 결함이있다면 곧바로 발견 할 수 있습니다. –