2017-10-02 9 views
1

私はsmack-android:4.1.0をチャット用に使用しています。私はopenfireを使用しています。私はAccountManagerを使用してアカウントを作成しようとしていますが、が不正な形式です私はすべてのことを試しましたが、解決策を見つけることができません。Android - XMPPError:jid-malformed - 変更

if(connection != null && connection.isConnected()){ 
        Log.e("=AccountManager= ","AccountManager"); 

        // Registering the user 
        AccountManager accountManager = AccountManager.getInstance(connection); 
        //Log.e("=supportsAccountCreation= ","="+accountManager.supportsAccountCreation()); 
        //Log.e("=getAccountInstructions= ","="+accountManager.getAccountInstructions()); 
        Map<String, String> attributes = new HashMap<>(); 
        attributes.put("email", "[email protected]"); 
              attributes.put("username", "spota421"); 

        if (accountManager!=null&&accountManager.supportsAccountCreation()) { 
         accountManager.sensitiveOperationOverInsecureConnection(true); 
         accountManager.createAccount("spota421", "xxxxx", attributes); 
        } 


       } 

以下は私のコンソールに入っています。誰かが私を誘導してください、私は間違っています。

D/SMACK: SENT (0): <iq to='52.62.104.135:9090' id='4Clc6-3' type='get'><query xmlns='jabber:iq:register'></query></iq> 
10-02 07:40:21.670 7216-7330/ 
D/SMACK: RECV (0): <iq type="error" id="4Clc6-3" to="ip-172-31-28-121.ap-southeast-2.compute.internal/8xk12y6kvq" from="52.62.104.135:9090"><query xmlns="jabber:iq:register"/><error code="400" type="modify"><jid-malformed xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq> 


org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: jid-malformed - modify 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at org.jivesoftware.smackx.iqregister.AccountManager.getRegistrationInfo(AccountManager.java:332) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at org.jivesoftware.smackx.iqregister.AccountManager.supportsAccountCreation(AccountManager.java:144) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at com.signity.spota.xmpp.CreateConnection.Authenticate(CreateConnection.java:182) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at com.signity.spota.xmpp.CreateConnection.access$200(CreateConnection.java:34) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at com.signity.spota.xmpp.CreateConnection$connect.onPostExecute(CreateConnection.java:121) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at com.signity.spota.xmpp.CreateConnection$connect.onPostExecute(CreateConnection.java:55) 
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:  at android.os.AsyncTask.finish(AsyncTask.java:636) 
+0

このXMPP Restful APIを使用してユーザーを作成できます。私はあなたが解決したいと思います。 https://www.igniterealtime.org/projects/openfire/plugins/restapi/readme.html#create-a-user –

+0

okですが、なぜ私は上記のエラーになっているのですか? – Achin

+1

はい、私のためのこの作業ソリューション – Achin

答えて

0

試してみてください。

 if (XMPPConnection != null && XMPPConnection.isConnected()) { 
       Log.e("=AccountManager= ", "AccountManager"); 

       AccountManager accountManager = AccountManager.getInstance(XMPPConnection); 

       Map<String, String> attributes = new HashMap<>(); 

       try { 
        if (accountManager != null && accountManager.supportsAccountCreation()) { 
         accountManager.sensitiveOperationOverInsecureConnection(true); 
         Jid jid = JidCreate.entityBareFrom("spot123" + "@" + "yourOpenFireService As String"); 
         accountManager.createAccount(jid.getLocalpartOrNull(), "Spot1234sdfsd", attributes); 
        } 
       } catch (SmackException.NoResponseException e) { 
        e.printStackTrace(); 
       } catch (XMPPException.XMPPErrorException e) { 
        e.printStackTrace(); 
       } catch (SmackException.NotConnectedException e) { 
        e.printStackTrace(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } catch (XmppStringprepException e) { 
        e.printStackTrace(); 
       } 


      } 
+0

あなたはどんなatrributeを置く必要はありません。 –

+0

私は ompile 'org.igniterealtime.smack:ピシャリ-アンドロイド:4.1.6' を使用しています私はこのコード – Achin

+0

を試してみましょう コンパイル 'org.igniterealtime.smack:ピシャリ-TCP:4.1.6' コンパイル「org.igniterealtimeを.smack:smack-android-extensions:4.1.6 ' – Achin

0

私は少し遅れていますが、JIDをエスケープするか、JIDメタキャラクタセットを削除/置換する必要があります。

関連する問題