Импорт контактов iCloud .NET (CardDAV)

Я пытался получить контакты iCloud, связанные с моим Apple Id, но по какой-то причине это не работает. Я получаю сообщение об ошибке (404) Not Found.

Я знаю, что iCloud использует CardDAV и что для доступа к контактам нужен определенный URL-адрес.

Для клиента CardDAV я использовал следующее: https://github.com/Metric/CardDavNet Для сервера адрес Я попробовал несколько URL-адресов (конечно, MYUSERID — мой реальный идентификатор пользователя):

https://p02-caldav.icloud.com/MYUSERID/carddavhome/card/ https://p02-contacts.icloud.com/MYUSERID/carddavhome/card/

Что я делаю неправильно? Я использую правильный URL-адрес сервера или что-то еще не так? Я надеюсь, что кто-то может направить меня в правильном направлении.


person Mittchel    schedule 14.06.2013    source источник
comment
Я новичок в iCloud, поэтому не могу понять, что такое MYUSERID? это Appie ID?   -  person kairen    schedule 17.07.2015


Ответы (1)


Второй URL-адрес, который вы упомянули, выглядит нормально. Но чтобы надежно получить URL-адрес, на котором размещена ваша адресная книга, вам необходимо запросить свойство addressbook-home-set основной записи вашей учетной записи.

Нравиться:

PROPFIND Depth:0 /12345/principal/
<propfind xmlns="DAV:">
  <prop>
    <addressbook-home-set xmlns="urn:ietf:params:xml:ns:carddav"/>
  </prop>
</propfind>

и чтобы найти принципала, вы запрашиваете свойство «principal-URL», например. on /, с вашим набором аутентификации:

PROPFIND Depth:0 /
<propfind xmlns="DAV:">
  <prop><principal-URL/></prop>
</propfind>

Вы также можете использовать прокси-сервер отладки, такой как Charles или Fiddler, чтобы выяснить, что ваша платформа .NET на самом деле отправляет на сервер.

person hnh    schedule 27.02.2014
comment
Спасибо за вашу помощь! Предоставленный вами пример кода является вызовом SOAP? Почему используется XML? - person Mittchel; 28.02.2014
comment
Это вызов WebDAV, и WebDAV использует XML для всех операций с метаданными. Погуглив, я нашел это, что кажется хорошим введением: cs.unibo.it /~фабио/webdav/WebDAV.pdf - person hnh; 28.02.2014
comment
Привет, Митчел, URL-адрес сервера всегда p02-caldav.icloud.com? может быть p03, p04, p05.... ? - person kairen; 17.07.2015
comment
Может быть любой pXY. Вы начинаете только с caldav.icloud.com, а затем вам нужно периодически проверять URL-адрес домашнего набора на случай, если пользователь будет перемещен на другой сервер. - person hnh; 17.07.2015