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

时间:2014-08-26 09:44:50

标签: 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();

1 个答案:

答案 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中。然后,您可以检索下一批,直到您检索完所有结果。