无法连接到 Openfire 服务器(使用 smack api) [英] Unable to connect to Openfire server (using smack api)

查看:47
本文介绍了无法连接到 Openfire 服务器(使用 smack api)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 smack 4.1.0 运行此代码

 Thread D= new Thread(new Runnable() {@覆盖公共无效运行(){SmackConfiguration.setDefaultPacketReplyTimeout(10000);XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder().setUsernameAndPassword("苛刻", "pass").setServiceName("192.168.0.200").setHost("192.168.0.200").setPort(5223).setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible).建造();AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);尝试 {conn2.connect();conn2.login();Presence 存在 = 新存在(Presence.Type.unavailable);Presence.setStatus("去钓鱼");//发送数据包(假设我们有一个名为con"的 XMPPConnection 实例).conn2.sendStanza(存在);} catch (SmackException | IOException | XMPPException e) {//TODO 自动生成的 catch 块e.printStackTrace();Log.d("TAG", e.toString());}ChatManager chatmanager = ChatManager.getInstanceFor(conn2);Chat newChat = chatmanager.createChat("harsh@192.168.0.200");尝试 {newChat.sendMessage("你好!");}捕获(SmackException.NotConnectedException e){//TODO 自动生成的 catch 块e.printStackTrace();}}});D.开始();}

这给了我一个错误:

05-15 14:59:35.350 4417-4439/com.example.smacktester W/System.err: org.jivesoftware.smack.SmackException$NoResponseException:在回复超时内没有收到回复.超时为 10000 毫秒(~10 秒).使用的过滤器:未使用过滤器或过滤器为空".05-15 14:59:35.351 4417-4439/com.example.smacktester W/System.err: at org.jivesoftware.smack.SynchronizationPoint.checkForResponse(SynchronizationPoint.java:192) 05-15 14:59:3441374439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.SynchronizationPoint.checkIfSuccessOrWait(SynchronizationPoint.java:114) 05-15 14:59:35.352 4417-4439/test.example.smackSystemer.err: at org.jivesoftware.smack.SynchronizationPoint.checkIfSuccessOrWaitOrThrow(SynchronizationPoint.java:97) 05-15 14:59:35.352 4417-4439/com.example.smacktester W/System.errware at org.smack.soft:tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:837) 05-15 14:59:35.352 4417-4439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.AbstractXMPPXConnection.MPConnection(AbstractXMPPXtractConnection.360) 05-15 14:59:35.354 4417-4439/com.example.smacktester W/System.err: at com.example.smacktester.MainActivity$1.run(MainActivity.java:50) 05-15 14:59:35.354 4417-4439/com.example.smacktester W/System.err:在 java.lang.Thread.run(Thread.java:818) 05-15 14:59:35.355 4417-4439/com.example.smacktester D/TAG:org.jivesoftware.smack.SmackException$NoResponseException:在回复超时内未收到响应.超时为 10000 毫秒(~10 秒).使用的过滤器:未使用过滤器或过滤器为空".05-15 14:59:35.365 4417-4444/com.example.smacktester W/AbstractXMPPConnection:连接因错误而关闭org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT   P@1:8 in java.io.BufferedReader@16ea33d4)在 org.kxml2.io.KXmlParser.next(KXmlParser.java:432)在 org.kxml2.io.KXmlParser.next(KXmlParser.java:313)在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1151)在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$200(XMPPTCPConnection.java:937)在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:952)在 java.lang.Thread.run(Thread.java:818) 05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:org.jivesoftware.smack.SmackException$NotConnectedException:客户端是没有或不再连接 05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.throwNotConnectedExceptionIfDoneAndResumptionNotTCPConnection26:4439/com.example.smacktester W/System.err:) 05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.tcp.XMPPTCPConnection.throwNotConnectedExceptionIfAppropriate(XMPPTCPConnection.java:335) 04:51935.377 4417-4439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.AbstractXMPPConnection.sendStanza(AbstractXMPPConnection.java:609) 05-15 14:59:35.377-439s7testcom.W/System.err:在 org.jivesoftware.smack.chat.ChatManager.sendMessage(ChatManager.java:365) 05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.chat.Chat.sendMessage(Chat.java:114) 05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:在 org.jivesoftware.smack.chat.Chat.sendMessage(Chat.java:98) 05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:在 com.example.smacktester.MainActivity$1.run(MainActivity.java:71)05-15 14:59:35.377 4417-4439/com.example.smacktester W/System.err:在 java.lang.Thread.run(Thread.java:818) 05-15 14:59:56.335 4417-4417/com.example.smacktester I/Timeline:时间轴:Activity_idle id:android.os.BinderProxy@2763795b time:38739229 05-15 15:00:19.772 4417-4427/com.example.smacktester W/art:Summary10.531ms 05-15 15:02:44.503 4417-4427/com.example.smacktester W/art:暂停所有线程花费了:7.832ms

并且,在本地 openfire 服务器中启用调试后,我收到此消息:

2015.05.15 14:50:03 index.jsp - 无法获取 RSS 提要:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:[vanity2.jiveon 不信任根证书.com]

我哪里出错了?

解决方案

AS per Discussion with user problem is .setPort(5223) in XMPPTCPConnectionConfiguration .Port 5223 by default Client SSL Port in Openfire,

您可以从管理面板更改 Openfire 3.10 中的此端口设置

<块引用>

服务器 >>服务器设置 >>客户端连接

错误

<块引用>

org.jivesoftware.smack.SmackException$NoResponseException: 无响应在回复超时内收到.超时为 10000 毫秒(~10 秒).

表示您正在尝试连接启用 SSL 的端口 [5223],而无需进行 SASL 协商.意味着您需要将 XMPP 服务器 [Opnefire] 提供的 SSL 证书存储在您的应用程序中[某些在您的内部/外部存储器中],并使用相同的证书与 SSL 端口上的 Xmpp 服务器进行进一步通信.

<块引用>

对于 SSL 身份验证,您可以使用 Truststore

有关 XMPP SASL 协商的更多信息,请参阅此链接

I am trying to run this code using smack 4.1.0

 Thread D= new Thread(new Runnable() {

            @Override
            public void run() {
                SmackConfiguration.setDefaultPacketReplyTimeout(10000);
                XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                        .setUsernameAndPassword("harsh", "pass")
                        .setServiceName("192.168.0.200")
                        .setHost("192.168.0.200")
                        .setPort(5223).setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible)
                        .build();

                AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
                try {
                    conn2.connect();

                    conn2.login();

                    Presence presence = new Presence(Presence.Type.unavailable);
                    presence.setStatus("Gone fishing");
                    // Send the packet (assume we have an XMPPConnection instance called "con").
                    conn2.sendStanza(presence);

                } catch (SmackException | IOException | XMPPException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.d("TAG", e.toString());
                }

                ChatManager chatmanager = ChatManager.getInstanceFor(conn2);


                Chat newChat = chatmanager.createChat("harsh@192.168.0.200");

                try {
                    newChat.sendMessage("Howdy!");
                }
                catch (SmackException.NotConnectedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }



            }
        });





        D.start();


    }

This gives me an error :

05-15 14:59:35.350    4417-4439/com.example.smacktester W/System.err﹕ org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 10000ms (~10s). Used filter: No filter used or filter was 'null'. 05-15 14:59:35.351    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.SynchronizationPoint.checkForResponse(SynchronizationPoint.java:192) 05-15 14:59:35.352    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.SynchronizationPoint.checkIfSuccessOrWait(SynchronizationPoint.java:114) 05-15 14:59:35.352    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.SynchronizationPoint.checkIfSuccessOrWaitOrThrow(SynchronizationPoint.java:97) 05-15 14:59:35.352    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:837) 05-15 14:59:35.352    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:360) 05-15 14:59:35.354    4417-4439/com.example.smacktester W/System.err﹕ at com.example.smacktester.MainActivity$1.run(MainActivity.java:50) 05-15 14:59:35.354    4417-4439/com.example.smacktester W/System.err﹕ at java.lang.Thread.run(Thread.java:818) 05-15 14:59:35.355    4417-4439/com.example.smacktester D/TAG﹕ org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 10000ms (~10s). Used filter: No filter used or filter was 'null'. 05-15 14:59:35.365    4417-4444/com.example.smacktester W/AbstractXMPPConnection﹕ Connection closed with error
    org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT ��P@1:8 in java.io.BufferedReader@16ea33d4)
            at org.kxml2.io.KXmlParser.next(KXmlParser.java:432)
            at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
            at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1151)
            at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$200(XMPPTCPConnection.java:937)
            at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:952)
            at java.lang.Thread.run(Thread.java:818) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ org.jivesoftware.smack.SmackException$NotConnectedException: Client is not, or no longer, connected 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.throwNotConnectedExceptionIfDoneAndResumptionNotPossible(XMPPTCPConnection.java:1226) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection.throwNotConnectedExceptionIfAppropriate(XMPPTCPConnection.java:336) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.AbstractXMPPConnection.sendStanza(AbstractXMPPConnection.java:609) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.chat.ChatManager.sendMessage(ChatManager.java:365) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.chat.Chat.sendMessage(Chat.java:114) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at org.jivesoftware.smack.chat.Chat.sendMessage(Chat.java:98) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at com.example.smacktester.MainActivity$1.run(MainActivity.java:71) 05-15 14:59:35.377    4417-4439/com.example.smacktester W/System.err﹕ at java.lang.Thread.run(Thread.java:818) 05-15 14:59:56.335    4417-4417/com.example.smacktester I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@2763795b time:38739229 05-15 15:00:19.772   4417-4427/com.example.smacktester W/art﹕ Suspending all threads took:
10.531ms 05-15 15:02:44.503    4417-4427/com.example.smacktester W/art﹕ Suspending all threads took: 7.832ms

And, after enabling debugging in the local openfire server, I get this message:

2015.05.15 14:50:03 index.jsp - Failed to fetch RSS feed: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: root certificate not trusted of [vanity2.jiveon.com]

Where am I going wrong ?

解决方案

AS per discussion with user problem was .setPort(5223) in XMPPTCPConnectionConfiguration .Port 5223 by default Client SSL Port in Openfire,

you can change this port setting in  Openfire 3.10 from Admin panel 

Server >> Server Settings >> Client Connections

error

org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 10000ms (~10s).

Means You are trying to connecting SSL enabled port [5223] with out doing SASL negotiation. Means you need to Store SSL certificate provided by XMPP server[Opnefire] in your application[some where in your internal/external memory] ,and use same certificate for further communication with Xmpp server on SSL Port.

For SSL authentication you can user Truststore

For more information on XMPP SASL negotiation refer this link

这篇关于无法连接到 Openfire 服务器(使用 smack api)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆