我的 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/