【问题标题】:Sending messages to ejabberd doesn't work for me向 ejabberd 发送消息对我不起作用
【发布时间】:2015-07-31 16:59:13
【问题描述】:

我是 ejabberd 的新手,我正在尝试创建一个 java 程序,只是为了对服务 ejabberd 进行一些测试,但始终从服务器获得相同的响应。

服务器正在运行,因为我可以尝试使用两个 pidgin 客户端。

我正在尝试遵循以下示例 http://xmpp.org/extensions/xep-0016.html

关于代码

ConnectionConfiguration cc = new ConnectionConfiguration("ip_server", 5222, "domain_defined_in_cfg");
// In ejabberd.cfg -> {hosts, ['domain_defined_in_cfg']}
cc.setDebuggerEnabled(true);
cc.setSASLAuthenticationEnabled(true);
XMPPConnection con = new XMPPConnection(cc);
System.setProperty("smack.debugEnabled", "true");
XMPPConnection.DEBUG_ENABLED = true;
try {
        SASLAuthentication.supportSASLMechanism("PLAIN", 0);
        con.connect();

        //This line returns 
        /*
No response from the server.: 
at org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthentication.java:430)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:331)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:349)
        */
        //con.login("user_admin", "password_user_admin");

Packet packet = new Packet() {
            @Override
            public String toXML() {
                //Sample of iq request
                StringBuilder sb = new StringBuilder("<iq type=\"get\" to=\"ip_server\">");
                sb.append("<query xmlns=\"jabber:iq:version\"/>");
                sb.append("</iq>");
                return sb.toString();
            }
        };
        con.sendPacket(packet);

} catch (XMPPException xe) {
        xe.printStackTrace();
        return;
}

当我发送代码或其他类似的 iq 请求时

<iq from='user@domain.com' type='get' id='getlist1'>
<query xmlns='jabber:iq:privacy'/>
</iq>

到服务器,我总是收到相同的响应

<iq id="getlist1" from="domain.com" type="error">
<error code="503" type="CANCEL">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>    
</iq>

只尝试遵循http://xmpp.org/extensions/xep-0016.html的示例1

登录可能是个问题,但无论如何,我更感兴趣的是为什么我不能向服务器发送消息。或者,我怎样才能以其他方式发送消息? (我也用腻子检查过)

有什么想法吗?

谢谢!

【问题讨论】:

    标签: java ejabberd


    【解决方案1】:

    从您分享的信息来看,您实际上可能没有在 ejabberd 上成功通过身份验证:

    • connect 方法将建立与 ejabberd 的连接。
    • 登录方法是必须的,才能真正登录并与服务交互。

    可能您为 ejabberd 配置的身份验证后端不支持 SASL。

    您应该尝试禁用 SASL 身份验证:

    cc.setSASLAuthenticationEnabled(false);
    

    然后取消注释您的登录调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-29
      • 2020-01-28
      • 2015-07-01
      • 1970-01-01
      • 2011-10-17
      • 2020-12-28
      • 2015-09-19
      • 1970-01-01
      相关资源
      最近更新 更多