2016-07-11 7 views
1

私はxmppサーバーに接続しようとしていますが、これが私にこのエラーを返します。Android xmppエラーホスト不明

W/AbstractXMPPConnection:接続エラー org.jivesoftware.smack.XMPPException $ StreamErrorExceptionで閉鎖:ホスト不明あなたはorg.jivesoftware.smackでhttp://xmpp.org/rfcs/rfc6120.html#streams-error-conditions で、このストリームエラー の意味についての詳細を読むことができます.tcp.XMPPTCPConnection $ PacketReader.parsePackets(XMPPTCPConnection.java:1003) (org.jivesoftware.smack.tcp.XMPPTCPConnection)$ PacketReader.access $ 300(XMPPTCPConnection.java:944) at org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader $ 1.run(XMPPTCPConnection.java:959) at java.lang.Thread.run(Thread.java:818)

この例をgithubで使用してこのデータを入れようとしました。

private static final String DOMAIN = "10.20.0.125"; 

private static final String HOST = "10.20.0.125"; 

private static final int PORT = 5222; 

private String userName ="[email protected]"; 

private String passWord = "asdfasdf"; 

サーバは大丈夫です、私たちは、Android上で通信を行うために別のテストPCを行ったが、このエラーは解消されません。

XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); 
    configBuilder.setUsernameAndPassword(userName, passWord); 
    configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    configBuilder.setResource("Android"); 
    configBuilder.setServiceName(DOMAIN); 
    configBuilder.setHost(HOST); 
    configBuilder.setPort(PORT); 

まず問題(主なもの): DOMAIN変数は(必要がありますが)サーバーである必要がありますが、このコードの行を持ってデモ構成で

答えて

0

は、私は主に2のエラーを参照してくださいあなたはIPだけでなくサーバー構成で読むことができます。一部の機能がローカルホストの外側で破損します。

第二の問題:そうもう一度、localhostのは、サーバーマシンの外に解決されないされます。 私はそれがユーザー名だ得ることはありませんどのような(これだけの接続を設定し、[ログイン)コンフィギュレーションからログイン分割することを提案しながら、 は、ドメイン名に置き換えなければなりません(理論的には、接続がユーザーに自分のドメインを与える場合でも、明示的にする必要はありません)。

ので:

connection.connect(); 
login(); 

connection.connect(); 
login(userName ,passWord,"Android"); 

に置き換えられますし、この2行削除する必要があります:ドメイン名について

configBuilder.setResource("Android"); 
configBuilder.setUsernameAndPassword(userName, passWord); 

を:あなた」それはサーバーの設定で見つけることができます、Openfireでそれはあなたが読むことができる "サーバー名"ですサーバー情報ページのn Webインターフェイス。

+0

私は必要な変更を加えましたが、connection.login(LoginUser、passwordUser、RESOURCE_TYPE)を実行するときに次のエラーが発生します。login:java.lang。NullPointerException:NULLオブジェクト参照で、インタフェースメソッド 'byte [] org.jivesoftware.smack.util.stringencoder.Base64 $ Encoder.encode(byte []、int、int)'を呼び出そうとしました – user6505882

+0

"RESOURCE_TYPE"の値は?ユーザーをサーバーに登録しましたか?しかし、私は別の質問だと思う... – MrPk

+0

私は新しいチケットが必要とは思わない。提供された修正の実装でこのエラーが発生したためです! RESOURCE_TYPEが指定されている場合(「Android」など)、ログイン時に新しいテストを行うために削除された場合に備えて問題が続く場合があります。 – user6505882

0

解決策を見つけることができました。 私の代わりにコンパイルのGradleの依存関係.jarファイルを使用していました:

compile 'org.igniterealtime.smack:smack-android:4.1.4' 
compile 'org.igniterealtime.smack:smack-tcp:4.1.4' 
compile 'org.igniterealtime.smack:smack-im:4.1.4' 
compile 'org.igniterealtime.smack:smack-extensions:4.1.4' 

したがって、エラーが解決されました。ご協力ありがとうございました。

関連する問題