0

我正在尝试使用来自 Unboundit 的 LDAP SDK 从 netscape LDAP 目录中检索具有多个属性的对象。问题是只返回了一个属性 - 我猜 LDAP SDK 依赖于唯一的属性名称,有没有办法将它配置为也返回非不同的属性?

@Test
public void testRetrievingUsingListener() throws LDAPException {
    long currentTimeMillis = System.currentTimeMillis();

    LDAPConnection connection = new LDAPConnection("xxx.xxx.xxx", 389,
            "uid=xxx-websrv,ou=xxxx,dc=xxx,dc=no",
            "xxxx");
    SearchRequest searchRequest = new SearchRequest(
            "ou=xxx,ou=xx,dc=xx,dc=xx",
            SearchScope.SUB, "(uid=xxx)", SearchRequest.ALL_USER_ATTRIBUTES );

    LDAPEntrySource entrySource = new LDAPEntrySource(connection,
            searchRequest, true);

    try {
        while (true) {
            try {
                System.out.println("*******************************************");
                Entry entry = entrySource.nextEntry();
                if (entry == null) {
                    // There are no more entries to be read.
                    break;
                } else {
                    Collection<Attribute> attributes = entry.getAttributes();
                    for (Attribute attr : attributes)
                    {
                        System.out.println (attr.getName() + " " + attr.getValue());

                    }
                }
            } catch (SearchResultReferenceEntrySourceException e) {
                // The directory server returned a search result reference.
                SearchResultReference searchReference = e
                        .getSearchReference();
            } catch (EntrySourceException e) {
                // Some kind of problem was encountered (e.g., the
                // connection is no
                // longer valid). See if we can continue reading entries.
                if (!e.mayContinueReading()) {
                    break;
                }
            }
        }
    } finally {
        entrySource.close();
    }

    System.out.println("Finished in "  + (System.currentTimeMillis() - currentTimeMillis));

}
4

1 回答 1

0

非唯一的 LDAP 属性被认为是多值的,并被表示为String数组。

使用Attribute.getValues()而不是attribute.getValue.

于 2012-09-20T13:08:13.413 回答