1

私は現在、ローカルで Tigase サーバーのセットアップと通信するための Android XMPP クライアントを開発しています。管理者のユーザー名とパスワードは、それぞれ admin と tigase です。

以下は、私が使用しているコードのスニペットです

class Test {

public static void main(String args[])throws Exception
{

System.setProperty("smack.debugEnabled", "true");
XMPPConnection.DEBUG_ENABLED = true;

ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1", 5222);
config.setCompressionEnabled(true);
config.setSASLAuthenticationEnabled(true);

XMPPConnection con = new XMPPConnection(config);

// Connect to the server
con.connect();
con.login("admin", "tigase");

Chat chat = con.getChatManager().createChat("aaphadke@mwbn43-1",
    new MessageListener() {       
    public void processMessage(Chat chat, Message message) {
           // Print out any messages we get back to standard out.
           System.out.println("Received message: " + message);
       }
   });
        try {
      chat.sendMessage("Hi!");
  }
  catch (XMPPException e) {
      System.out.println("Error Delivering block");
  }


 String host = con.getHost();
 String user = con.getUser();
 String id = con.getConnectionID();
 int port = con.getPort();
 boolean i = false;
 i = con.isConnected();
 if (i)
 System.out.println("Connected to host " + host + " via port " + port + " connection id is " + id);

 System.out.println("User is " + user);
 con.disconnect();
 }
 }

このコードを実行すると、次のエラーが発生します

 Exception in thread "main" Resource binding not offered by server: 
 at   org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthenticatio     n.java:416) 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)
 at Test.main(Test.java:26)

同じ問題に関するこの記事を見つけましたが、 ここに具体的な解決策はあり ません。誰かこの問題の解決策を教えてください。Smack API の XMPPConnection.java ファイルを確認したところ、リンクの解決策と同じように見えます。

ありがとう、アメヤ

4

2 に答える 2

3

ここで与えられた問題の解決策を見つけました

これらは、サーバーに接続する前に追加する必要がある行です

ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1", 5222);
config.setSASLAuthenticationEnabled(false);
XMPPConnection xmpp = new XMPPConnection(config);

ご助力いただきありがとうございます

于 2010-06-07T18:37:32.743 に答える
-1

これはライブラリの問題、バグだと思います。プロトコルを正しく処理しません。ユーザーが認証される前にリソース バインドを送信する意味がないため、サーバーによって通知されません。クライアントはそれについて不平を言うべきではありません。

于 2010-06-05T07:25:01.487 に答える