SearchResult в Java - PullRequest
       27

SearchResult в Java

2 голосов
/ 07 июня 2010

Я перечисляю пользователей из LDAP со следующим кодом:

    Hashtable<String, String> env = new Hashtable<String, String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT);
    env.put(Context.PROVIDER_URL, HOST); 
    env.put(Context.SECURITY_PRINCIPAL,USER); 
    env.put(Context.SECURITY_CREDENTIALS,PASSWORD);


    DirContext ctx = new InitialDirContext(env);

    SearchControls sc = new SearchControls();
    sc.setSearchScope(SearchControls.SUBTREE_SCOPE);

    NamingEnumeration items = ctx.search(BASE, filter, sc);
    while (items != null && items.hasMore()) {
        SearchResult sr = (SearchResult)items.next();
        System.out.println("SR : " + sr) ;
    }

Теперь я получаю вывод:

SR : cn=smith: null:null:{objectclass=objectClass: person, sn=sn: smith, cn=cn: smith}
SR : cn=king: null:null:{objectclass=objectClass: person, sn=sn: king, cn=cn: king}

Как я могу получить из SearchControls только вывод:

sn = smith |  cn = smith
sn = king  |  cn = king

Ответы [ 2 ]

3 голосов
/ 07 июня 2010

Разве не достаточно простого изменения вашей системы, как показано ниже?

System.out.println("SR : " 
+ sr.getAttributes().get("sn")
+ " | " 
+ sr.getAttributes().get("cn")
) ;

Или я что-то здесь неправильно читаю?

0 голосов
/ 07 июня 2010

Вы можете попробовать сопоставить строку SR с парой регулярных выражений, чтобы получить значения sn и cn:

sn=sn: ([^,]),

cn=cn: ([^,]),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...