2016-10-19 14 views
3

を使用して新しいユーザを作成しました。私はsmackクライアントライブラリ4.1.8とx​​mppサーバ(openfireサーバ)を使ってチャットアプリケーションを開発していましたが、 Accountmangerクラスを使用すると、それが上昇し、例外: -XMPPError:不正リクエスト - smackライブラリ4.1.8とopenfire

XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder() 
         .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
         .setHost("127.0.0.1") 
         .setDebuggerEnabled(true) 
         .setPort(5222) 
         .setSendPresence(true) 
         .setServiceName("127.0.0.1") 
         .build(); 

       AbstractXMPPConnection conn2 = new XMPPTCPConnection(conf); 

       //conn2.login(); 
       conn2.connect(); 

       AccountManager accountManager = AccountManager.getInstance(conn2); 
       if (accountManager.supportsAccountCreation()) { 
        accountManager.sensitiveOperationOverInsecureConnection(true); 
        accountManager.createAccount("qidus", "123456"); 
        conn2.login("qidus", "123456"); 

       } 

      } catch (SmackException | IOException | XMPPException e) { 
       e.printStackTrace(); 
      } 

を "XMPPError悪い要求は修正" と例外が(0)この

04:01:41 AM SENT (0): <iq to='127.0.0.1' id='aYej1-3' type='get'><query xmlns='jabber:iq:register'></query></iq> 

午前4時01分41秒AMのRECVです:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: bad-request - modify 
at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:135) 
at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232) 
at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213) 
at org.jivesoftware.smackx.iqregister.AccountManager.getRegistrationInfo(AccountManager.java:332) 
at org.jivesoftware.smackx.iqregister.AccountManager.supportsAccountCreation(AccountManager.java:144) 
at chat.Chat$1.run(Chat.java:46) 

答えて

3

サービス名を正しく設定する必要があります。 adminf(127.0.0.1:9090)を使ってOpenFireでserviceNameを確認することができます。ページの中央の最初のページにあります。ログイン後に "Server Name"を探します。

デフォルトでは、マシン名です。

ただし、コードは1回のみ実行されます。2回目のAccountMangerは、既に登録されているユーザーのため例外をスローします。

+0

ありがとうございます。それは本当に問題を解決しました。 – Qidus

+0

あなたは歓迎です、答えを受け入れること自由に感じる:) – MrPk

0

また、アカウント作成のために渡すユーザー名にnull値がある場合、このエラーまたは例外が発生します。ユーザー名も確認してください。

関連する問題