我试着从一个iCloud帐户中获取所有联系人.
我先跑:
<?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:">
<d:prop>
<d:current-user-principal/>
</d:prop>
</d:propfind>然后我得到/xxxxxxxxxxx/carddavhome/并运行:
<?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:" xmlns:card="urn:ietf:params:xml:ns:carddav">
<d:prop>
<card:addressbook-home-set/>
</d:prop>
</d:propfind>这给我URL ,然后我向这个URL发送以下请求:
<?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:" xmlns:card="urn:ietf:params:xml:ns:carddav">
<d:prop>
<d:displayname/>
<d:resourcetype/>
</d:prop>
</d:propfind>我得到了:
<?xml version="1.0" encoding="UTF-8"?>
<multistatus xmlns="DAV:">
<response>
<href>/xxxxxxxxxxx/carddavhome/</href>
<propstat>
<prop>
<resourcetype>
<collection/>
</resourcetype>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<displayname/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
</multistatus>如果我尝试将其运行到URL
<?xml version="1.0" encoding="UTF-8"?>
<card:addressbook-query xmlns:d="DAV:" xmlns:card="urn:ietf:params:xml:ns:carddav">
<d:prop>
<d:getetag/>
<card:address-data/>
</d:prop>
</card:addressbook-query>我得到:格式不当遇到的XML,意外的根节点
我犯了什么错?前两个查询工作并给出预期的结果,第三个查询应该给我一个通讯录和组的列表,第四个查询应该给我所有的VCards。
发布于 2020-03-19 07:18:34
对于第一个问题,您没有提供整个HTTP请求,但我怀疑您缺少一个值为1的深度标头:
Depth: 1对于第二个问题,xml负载似乎没有任何问题。另一方面,您的url似乎不正确,因为它至少缺少了表示集合的结束斜杠(一些*DAV服务器对其更严格)。希望解决第一个问题将允许您在进行地址簿查询时使用正确的url。
https://stackoverflow.com/questions/60720728
复制相似问题