请求CardDav服务器的匹配数量限制

时间:2014-09-22 14:16:48

标签: icloud carddav

我最近尝试从iCloud CardDav服务器上读取很多VCards。但是我意识到我要求的第5000个vCard有限制。

这是我的REPORT请求:

<?xml version="1.0" encoding="utf-8" ?>
   <C:addressbook-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
   <C:filter>
      <C:prop-filter name="X-ADDRESSBOOKSERVER-KIND" test="anyof">
         <C:is-not-defined />
         <C:text-match collation="i;unicode-casemap" match-type="equals" negate-condition="yes">group</C:text-match>
      </C:prop-filter>
   </C:filter>
</C:addressbook-query>

这是服务器答案的结束:

<response>
   <href>/872816606/carddavhome/card/</href>
   <status>HTTP/1.1 507 OK</status>
   <error><number-of-matches-within-limits/></error>
</response>

有没有办法查询下一页?

提前致谢。

1 个答案:

答案 0 :(得分:2)

CardDAV本身并不提供分页机制。另一方面,WebDAV Sync(http://tools.ietf.org/html/rfc6578)确实提供了分页,但并非所有服务器实现都支持分页。

现在,如果了解您的查询,您几乎要求集合中的所有联系人,组除外。除非您有非常多的组,否则您可能希望在客户端过滤它们,在这种情况下您可以使用常规PROPFIND(或WebDAV Sync REPORT),然后是一系列CarDAV multiget REPORTs,这是大多数客户端做。