gpt4 book ai didi

java - ldap连接的java程序中出现NullPointerException

转载 作者:行者123 更新时间:2023-12-02 06:20:16 25 4
gpt4 key购买 nike

运行程序时出现 NullPointer 异常。请帮忙 !!

代码在这里:

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

public class LdapTest {

public static void main(String[] args) throws Exception
{

final String PROVIDER_URL = "http://localhost:1389/dc=vysbank,dc=com"; //Enter LDAP URL here

final Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, PROVIDER_URL);

try {

DirContext ctx = new InitialDirContext(env);

String filter = "(uid=1234)"; // Enter User ID here.
String[] attrIDs = {"uid","cn","mail"}; // Enter list of attributes to retrieve from LDAP here

SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
ctls.setReturningAttributes(attrIDs);

NamingEnumeration answer = ctx.search("ou=People", filter, ctls);

SearchResult searchResult = null;
String cn=null;
String uid=null;
String mail=null;

while (answer.hasMore()) {

searchResult = (SearchResult) answer.next();
Attributes attr = searchResult.getAttributes();
cn=attr.get("cn").get(0).toString();
uid=attr.get("uid").get(0).toString();
mail=attr.get("mail").get(0).toString();

System.out.println("Name: "+cn);
System.out.println("User ID: "+uid);
System.out.println("E-mail Address: "+mail);

}

} catch (Exception e) {
e.printStackTrace();
}

}

}

最佳答案

这里可能有 null 指针:

searchResult = (SearchResult) answer.next();
Attributes attr = searchResult.getAttributes();
cn=attr.get("cn").get(0).toString();
uid=attr.get("uid").get(0).toString();
mail=attr.get("mail").get(0).toString();

我会执行null指针检查以查看是否有任何值为空,如果是,则给出默认的空字符串值:

if(attr != null){   
if(attr.get("cn") != null && attr.get("cn").get(0) != null)
cn=attr.get("cn").get(0).toString();
else
cn = "";
if(attr.get("uid") != null && attr.get("cn").get(0) != null)
uid=attr.get("uid").get(0).toString();
else
uid = "";
if(attr.get("mail") != null && attr.get("cn").get(0) != null)
mail=attr.get("mail").get(0).toString();
else
mail = "";
}

但是,这一切都取决于代码的目标。如果您从前端(例如网页)接收值,则应始终进行空或 null 检查。如果您正在创建变量并计划使用它们,请确保这些变量在您使用它们时包含值。

关于java - ldap连接的java程序中出现NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com