スマートAPIを使用して、ラップトップ(ローカルホスト)に設定されているOpenfire XMPPサーバーに接続してログインしようとしています。Smackログイン()にOpenfireが応答しない
XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder()
.setServiceName("win10-xps15")
.setHost("192.168.1.100")
.setPort(5222)
.setCompressionEnabled(false)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.build();
XMPPTCPConnection connection = new XMPPTCPConnection(conf);
connection.connect();
connection.login("admin", "password");
connect()メソッドは成功しますが、login()メソッドは失敗し、NoResponse(タイムアウト)例外が発生します。
Exception in thread "main" org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: No filter used or filter was 'null'.
at org.jivesoftware.smack.SmackException$NoResponseException.newWith(SmackException.java:106)
at org.jivesoftware.smack.SmackException$NoResponseException.newWith(SmackException.java:85)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:250)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginNonAnonymously(XMPPTCPConnection.java:374)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:456)
at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:431)
at MyConnector.main(MyConnector.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Apr 13, 2016 11:45:42 AM org.jivesoftware.smack.AbstractXMPPConnection callConnectionClosedOnErrorListener
WARNING: Connection closed with error
java.lang.NullPointerException
at org.jivesoftware.smack.util.stringencoder.Base64.decode(Base64.java:86)
at org.jivesoftware.smack.sasl.SASLMechanism.challengeReceived(SASLMechanism.java:233)
at org.jivesoftware.smack.SASLAuthentication.challengeReceived(SASLAuthentication.java:328)
at org.jivesoftware.smack.SASLAuthentication.challengeReceived(SASLAuthentication.java:313)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1051)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:948)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:963)
at java.lang.Thread.run(Thread.java:745)
私のWindowsラップトップでOpenfire 3.9.3を実行していて、ローカルIPは192.168.1.100です。 smackライブラリのバージョンは4.1.6です。
login()メソッドが失敗するので、私は注意すべきlogin/userに関連するOpenfireサーバー設定があるのでしょうか?
さらに、Spark IM clientでログインしようとしましたが、問題なくローカルサーバーにログインできました。
よろしくお願いいたします。
さらに詳しい情報が以下に追加されました。
私はピシャリと次のコードでSpark IM github repoから取得したの古いバージョン(3.4.1)を試してみました:
ConnectionConfiguration conf =
new ConnectionConfiguration("192.168.1.100", 5222);
XMPPConnection connection = new XMPPConnection(conf);
connection.connect();
connection.login("admin", "password");
今のコードが正常に動作します。 connect()とlogin()の両方がOKです。
しかし、私は本当に私が期待しているように、最後のバージョンのスティックがうまくいかないことを知りたがっています。古いバージョンはAndroidをネイティブにサポートしていないのに対し、私はAndroidでsmackを使用することを検討しているからです。
私はあなたのようにSmackとログインの最新バージョンを使用しています。私は3時間後に私のコードにアクセスすることはできません。あなたを助けようとします。 –