我正在创建一个应用程序,我在那里编写LDAP客户端 连接到SunOne Directory Server。用户输入属性,选择 输入并输入值,我的应用程序将创建该用户 的SunOne。
当用户选择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
创建此用户答案 0 :(得分:0)
通常,电话号码是字符串,而不是整数。 RFC 4517建议以规范格式存储电话号码 - 即E.123国际电话号码。 "电话号码"属性homePhone的语法在LDAP模式中配置,默认情况下强制执行 - 但您可以更改配置。
如果您自己的Java程序和Apache Directory Studio连接到同一个LDAP服务器实例,则它们应该被视为相同,因为语法是由服务器而不是客户端强制执行的。由于22334546是可接受的值,Apache Directory Studio会成功。
错误似乎与您的代码有关,主要是attrVal没有保持正确的值。