我的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();
答案 0 :(得分:1)
你走在正确的轨道上。偏移是存在的,因此您可以翻阅结果。这是关闭袖口,所以它可能不完全正确,但它应该得到重点。
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中。然后,您可以检索下一批,直到您检索完所有结果。