将普通SASL打成了jabberd

时间:2017-11-06 20:45:19

标签: smack

我正在使用smack 4.2.1并尝试连接到ejabberd服务器。 服务器使用来自身份验证的普通SASL机制。

如果我使用另一个像babbler这样的库,我可以进行身份​​验证。 但有了咂嘴,我没有运气。

我一直得到以下例外

Exception in thread "main" java.lang.NullPointerException
at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:64)
at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:60)
at org.jivesoftware.smack.util.stringencoder.Base64.encodeToString(Base64.java:42)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:212)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:170)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:202)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginInternal(XMPPTCPConnection.java:386)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:493)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:467)

我的代码是

XMPPTCPConnectionConfiguration c = XMPPTCPConnectionConfiguration.builder().setHost("api.coredial.com")
            .setHostAddress(InetAddress.getByName("api.coredial.com")).setDebuggerEnabled(true).setPort(5222)

            .setXmppDomain(String.valueOf(JidCreate.bareFrom("api.coredial.com")))
            .setUsernameAndPassword(userName,password)


            .setHostnameVerifier(new HostnameVerifier() {
                public boolean verify(String s, SSLSession sslSession) {
                    return true;
                }
            }).build();


    XMPPTCPConnection con = new XMPPTCPConnection(c);


    // Connect to the server
    con.connect();
    //con.login();
    con.login(userName,password);

任何建议都是适当的。

1 个答案:

答案 0 :(得分:0)

在将smack-java7和smack-sals-javax依赖项包含到我的pom.xml中后,我设法解决了这个问题。

我认为添加jar似乎会导致静态初始化程序添加启用普通sasl所需的初始化。