2012-07-11 78 views
0

我有大問題。每當我嘗試連接到任何jabber服務器時,我都會收到「SASL身份驗證DIGEST-MD5失敗」通知。當我不使用JPasswordField時,我沒有這個錯誤,但是在IM中使用JTextField是毫無意義的。我已經嘗試了我找到的每種方法,但它都是相同的。Smack 3.2.2 SASL認證DIGEST-MD5失敗:invalid-authzid

代碼:從的printStackTrace()

private void bLoginAction(JTextField login, JPasswordField pass) { 
loginText = login.getText(); 
passText = pass.getPassword().toString(); 
String[] data = loginText.split("@"); 
Connection.DEBUG_ENABLED = true; 
ConnectionConfiguration config = new ConnectionConfiguration(data[1], 5222); 
Connection con = new XMPPConnection(config); 
try { 
con.connect(); 
} catch (XMPPException e) { 
e.printStackTrace(); 
} 
try { 
con.login(loginText, passText); 
} catch (XMPPException e) { 
e.printStackTrace(); 
} 
} 

打印:

SASL驗證DIGEST-MD5失敗:無效-authzid:在 org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication .java: 337)at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203) at org.jivesoftware.smack.Connection.login(Connection.java:348)

回答

0

請勿使用toString()。嘗試使用getPassword()而不是如here所示。即使使用JTextField,也應該使用getText()而不是toString()

這不是一個單調的問題,而是一個直接的Java問題。

+0

非常感謝。它非常完美!我只需要從char []創建String。 String passText = new String(pass.getPassword());如果有人需要這個;) – Ragnar 2012-07-11 14:46:26