我正在使用 UnboundId SDK 搜索 LDAP 并使用 SimplePagedResultsControl 对我的结果进行分页。我能够正确搜索并根据页面大小获得第一组所需的结果,但我无法检索后续结果集,因为来自 SearchResult 的响应控制对象为 NULL。我需要检索 cookie 值并将其设置在下一个搜索请求中,以便搜索请求继续检索剩余的结果。
我正在使用 UnboundId SDK 网站和其他网站中给出的类似代码。任何解决此问题的帮助将不胜感激。
// Perform a search to retrieve all users in the server, but only retrieving
// ten at a time.
int numSearches = 0;
int totalEntriesReturned = 0;
SearchRequest searchRequest = new SearchRequest("dc=example,dc=com",
SearchScope.SUB, Filter.createEqualityFilter("objectClass", "person"));
ASN1OctetString resumeCookie = null;
while (true)
{
searchRequest.setControls(
new SimplePagedResultsControl(10, resumeCookie));
SearchResult searchResult = connection.search(searchRequest);
numSearches++;
totalEntriesReturned += searchResult.getEntryCount();
for (SearchResultEntry e : searchResult.getSearchEntries())
{
// Do something with each entry...
}
LDAPTestUtils.assertHasControl(searchResult,
SimplePagedResultsControl.PAGED_RESULTS_OID); -*Failing here as the SearchResult obj
is not having any Response Control*
SimplePagedResultsControl responseControl =
SimplePagedResultsControl.get(searchResult);
if (responseControl.moreResultsToReturn())
{
// The resume cookie can be included in the simple paged results
// control included in the next search to get the next page of results.
resumeCookie = responseControl.getCookie();
}
else
{
break;
}
}