【问题标题】:Malformed 'homePhone' attribute value格式错误的“homePhone”属性值
【发布时间】:2016-11-16 07:43:46
【问题描述】:

我正在创建一个应用程序,我在其中编写 LDAP 客户端,它将 连接到 SunOne 目录服务器。用户输入属性,选择 键入并输入值,我的应用程序将在 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 directory Studio 创建这个用户

【问题讨论】:

    标签: java ldap jndi ldap-query


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      相关资源
      最近更新 更多