java - 使用 EWS 检索超过 1000 个联系人

标签 java exchangewebservices

我的 Outlook 帐户有近 2500 个联系人。我正在尝试使用 EWS 托管 API for java 获取这些联系人。但它只返回 1000 个联系人。我做了一些研究,发现可以通过设置偏移值来完成,我尝试了相同的但没有成功。任何帮助将非常感激。谢谢:)

下面是我正在使用的代码段。

ItemView view = new ItemView(numItems);
FindItemsResults<Item> findResults = service.findItems(new FolderId(WellKnownFolderName.Contacts, new Mailbox("a@b.com")),view);    
ArrayList<Item> contact = findResults.getItems();

最佳答案

你走在正确的道路上。偏移量就在那里,因此您可以翻阅结果。这是即兴的,因此可能不完全正确,但应该能够表达要点。

int offset = 0;
int pageSize = 100;
ItemView view = new ItemView(pageSize, offset, OffsetBasepoint.Beginning);
FindItemsResults<Item> find;
boolean more = true;
List<Item> contacts = new ArrayList<Item>();
while (more) {
    find = service.findItems(...);
    contacts.addAll(find.getItems());
    if (find.isMoreAvailable()){
        offset += pageSize;
        view.setOffset(offset);
    } else {
        more = false;
    }
 }

使用 isMoreAvailable() 确定服务器上是否有更多项目,如果有,则将偏移量增加每次调用中获取的项目数,并将其设置在 ItemView 中。然后您可以检索下一批,直到检索完所有结果。

关于java - 使用 EWS 检索超过 1000 个联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25502705/

相关文章:

java - 不使用 BigInteger 的 Karatsuba 算法

java - 建立安全连接时没有共同的密码套件

exchange-server - Exchange Web Service 与 Exchange ActiveSync(或者当您可以免费获得奶牛时,为什么还要购买牛奶?)

c# - 使用 Oauth 和 full_access_as_user 对 EWS 进行身份验证

java - 通过 Exchange WebServices Java API 1.1 发送电子邮件

java - 如何使用 Apache POI 进行列跨度来解析 XLS?

java - 使用 Jsoup 提取评论

java - Exchange Web 服务 (EWS) Java Api : 401 Unauthorized

java - Classformat异常的原因是什么?

c# - EWS 和 TLS 1.2 - 自动连接时出现问题