我正在尝试使用 CardDav 从崇光组件系统中检索联系人列表(.vcf 格式)。我已成功将我的代码与其他系统一起使用,但 Sogo 并没有按我的预期工作。我将 URL 设置为:
https://<server>/SOGo/dav/<user>/Contacts/personal/
用户 ID 和密码提供给 libcurl。该命令是带有以下 xml 的 REPORT:
<?xml version="1.0" encoding="utf-8" ?>
<card:addressbook-query d="DAV:"xmlns:card="urn:ietf:params:xml:ns:carddav">
<d:prop>
<d:getetag />
<card:address-data>
</card:address-data>
</d:prop>
<card:filter>
<card:prop-filter name="FN">
</card:prop-filter>
</card:filter>
</card:addressbook-query>
对于其他系统,此查询将生成一个包含多个 vcard 条目的文件,这正是我想要的。使用崇光,我得到的只是:
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
</D:multistatus>
我注意到对上述 URL 的 PROPFIND 命令会给我一个非常大的文件,其中包含多个 URL,每个联系人条目一个。这些确实有效,但是必须执行可能数千个 GET 来逐一检索它们会慢得多。有人知道我的地址簿查询出了什么问题吗?
相关问题:我想对日历做基本相同的事情(xml 输入略有不同)并且有同样的问题。但是有一个解决方法,我可以对这个 URL 执行 GET:
https://<server>/SOGo/dav/<user>/Calendar/personal.ics
我得到了我想要的整个 .ics 文件。但是,似乎没有可用于联系人的等效 URL - 我错了吗?