2016-11-16 101 views
-1

我正在创建一个应用程序,我正在编写将连接到SunOne Directory Server的 LDAP客户端。用户输入属性,请选择 类型并输入值,我的应用程序将在SunOne的 上创建该用户。格式错误的“homePhone”属性值

当用户选择homePhone,类型为Integer并进入值作为22334546,它失败下面例外

javax.naming.directory.InvalidAttributeValueException: Malformed 'homePhone' attribute value; remaining name 'cn=Identity3,ou=SunOU' 

对于相同的代码是

for(...) 
{ 
    String attrName = attrRequest.getName(); 
    Object attrVal = attrRequest.getValue(); 
    BasicAttribute attribute = getBasicAttribute(attrName, attrVal); 
    attrs.put(attribute); 
} 

ldapCtx.bind(objectDN,null,attrs); 

我能够使用来创建该用户Apache目录Studio

enter image description here

回答

0

通常,电话号码是一个字符串,而不是整数。 RFC 4517建议以规范格式存储电话号码 - 即E.123国际。属性homePhone的“电话号码”语法在您的LDAP模式中配置,并且默认强制执行 - 但您可以更改配置。

如果您自己的Java程序和Apache Directory Studio连接到相同的LDAP服务器实例,则它们应该被视为相同,因为语法是由服务器而不是由客户端强制执行的。而且由于22334546是一个可以接受的值,Apache Directory Studio成功了。

该错误似乎与您的代码,主要是attrVal没有保持正确的价值。