导入 iCloud 联系人 .NET (CardDAV)

Posted

技术标签:

【中文标题】导入 iCloud 联系人 .NET (CardDAV)【英文标题】:Import iCloud contacts .NET (CardDAV) 【发布时间】:2013-06-10 21:06:33 【问题描述】:

我一直在尝试接收与我的 Apple ID 相关的 iCloud 联系人,但由于某种原因它不起作用。我收到 (404) Not Found 错误。

我知道 iCloud 使用 CardDAV,并且您需要一个特定的 URL 地址才能访问您的通讯录。

对于 CardDAV 客户端,我使用了以下内容:https://github.com/Metric/CardDavNet 对于服务器地址,我尝试了多个 url(当然 MYUSERID 是我的真实用户 ID):

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

我做错了什么?我使用了正确的服务器 URL 还是有其他问题?我希望有人能引导我走向正确的方向。

【问题讨论】:

我对 iCloud 很陌生,所以我无法获得“MYUSERID”是什么?是 Appie ID 吗? 【参考方案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”属性,例如在 / 上,设置您的身份验证:

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

您可能还想使用 Charles 或 Fiddler 等调试代理来确定您的 .NET 框架实际发送到服务器的内容。

【讨论】:

感谢您的帮助!您提供的示例代码是 SOAP 调用吗?为什么使用 XML? 这是一个 WebDAV 调用,WebDAV 使用 XML 进行所有元数据操作。谷歌搜索我发现这似乎是一个不错的介绍:cs.unibo.it/~fabio/webdav/WebDAV.pdf 嗨 Mitchel,服务器 url 始终是 p02-caldav.icloud.com ?会不会是 p03、p04、p05....? 可以是任何 pXY。您从 caldav.icloud.com 开始,然后您需要定期检查家庭设置 URL,以防用户移动到不同的服务器。

以上是关于导入 iCloud 联系人 .NET (CardDAV)的主要内容,如果未能解决你的问题,请参考以下文章

苹果手机怎么不能导入通讯录呢

手动同步 iCloud

iCloud ios 邮件联系人

CardDAV 从 iCloud 获取所有联系人

在 iCloud 上保存网站联系人

从 iCloud API 获取联系人列表