2016-11-16 33 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沒有保持正確的價值。