使用java从ldap服务器获取数据
请在下面找到我的代码片段:
String[] attrIDs = {"title", "Depatrment", "DivisionDescription" };
SearchControls ctls = new SearchControls();
ctls.setReturningAttributes(attrIDs);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> answer = ctx.search(ldapServerSearchBase, FILTER, ctls);
SearchResult sr = (SearchResult) answer.next();
Attributes attrs = sr.getAttributes();
String str_title = attrs.get("title").toString();
String str_dept = null;
String str_desc = null;
if(str_title.equals("Professor"))
{
str_dept = attrs.get("Depatrment").toString();
str_desc = attrs.get("DivisionDescription").toString();
}
System.out.println(str_title);
System.out.println(str_dept);
System.out.println(str_desc);
当我运行这段代码时,当我输出str_dept和str_desc时,它总是显示null。但它确实正确地将str_title显示为“Professor”。 请帮助我了解这里可能出现的问题
谢谢
# 1 楼答案
您确定要获取的属性确实存在吗
首先,
Depatrment
拼写错误,而且DivisionDescription
很可能不存在(至少在大多数目录服务的默认示意图中不存在)。可能您需要以下属性?:DivisionDescription
=>division
Depatrment
=>department
但是,请检查您的目录服务是否确实包含请求的属性(并且用户在这些属性中确实有一些值)
# 2 楼答案
虽然我相信,如果提供更多信息,有更好的方法来做到这一点,但下面的例子应该会让你上路:
-吉姆