2010-06-07 93 views
1

我列出了从LDAP用户用下面的代码:信息搜索结果在Java中

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

岂不在你的系统输出一个简单的变化,如下足矣?

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

或者,我在这里看到的东西不正确吗?

+0

也就是说正是我需要的,谢谢@VJ – Adnan 2010-06-08 05:57:45

0

你可以尝试匹配字符串SR一对正则表达式来获得sncn值:

sn=sn: ([^,]),

cn=cn: ([^,]),