无法连接到 Openfire 服务器(使用 smack api)
Unable to connect to Openfire server (using smack api)
我正在尝试使用 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();
}
这给了我一个错误:
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.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.access0(XMPPTCPConnection.java:937)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.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.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
并且,在本地 openfire 服务器中启用调试后,我收到此消息:
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]
我哪里错了?
根据与用户问题的讨论,在 XMPPTCPConnectionConfiguration 中 .setPort(5223)
。Openfire 中默认的客户端 SSL 端口为 5223,
you can change this port setting in Openfire 3.10 from Admin panel
Server >> Server Settings >> Client Connections
错误
org.jivesoftware.smack.SmackException$NoResponseException: No response
received within reply timeout. Timeout was 10000ms (~10s).
表示您正在尝试连接启用 SSL 的端口 [5223] 而不进行 SASL 协商。
意味着您需要将 XMPP 服务器 [Opnefire] 提供的 SSL 证书存储在您的应用程序中 [某些地方在您的 internal/external 内存中],并使用相同的证书与 SSL 端口上的 Xmpp 服务器进一步通信。
For SSL authentication you can user Truststore
For more information on XMPP SASL negotiation refer this link
我正在尝试使用 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();
}
这给了我一个错误:
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.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.access0(XMPPTCPConnection.java:937)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.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.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
并且,在本地 openfire 服务器中启用调试后,我收到此消息:
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]
我哪里错了?
根据与用户问题的讨论,在 XMPPTCPConnectionConfiguration 中 .setPort(5223)
。Openfire 中默认的客户端 SSL 端口为 5223,
you can change this port setting in Openfire 3.10 from Admin panel
Server >> Server Settings >> Client Connections
错误
org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 10000ms (~10s).
表示您正在尝试连接启用 SSL 的端口 [5223] 而不进行 SASL 协商。 意味着您需要将 XMPP 服务器 [Opnefire] 提供的 SSL 证书存储在您的应用程序中 [某些地方在您的 internal/external 内存中],并使用相同的证书与 SSL 端口上的 Xmpp 服务器进一步通信。
For SSL authentication you can user Truststore
For more information on XMPP SASL negotiation refer this link