Java Android-XMPPError:jid格式错误-修改

Java Android-XMPPError:jid格式错误-修改,java,android,ejabberd,smack,xmppframework,Java,Android,Ejabberd,Smack,Xmppframework,我使用smack android:4.1.0聊天,我使用openfire。当我尝试在android中使用AccountManager创建帐户时,我发现jid的格式不正确,我尝试了所有的方法,但找不到解决方案,我共享代码来创建用户 if(connection != null && connection.isConnected()){ Log.e("=AccountManager= ","AccountManager");

我使用smack android:4.1.0聊天,我使用openfire。当我尝试在android中使用AccountManager创建帐户时,我发现jid的格式不正确,我尝试了所有的方法,但找不到解决方案,我共享代码来创建用户

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", "kanta@signitysolutions.in");
                                            attributes.put("username", "spota421");

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


                } 
if(connection!=null&&connection.isConnected()){
Log.e(“=AccountManager=”,“AccountManager”);
//注册用户
AccountManager=AccountManager.getInstance(连接);
//Log.e(“=supportsAccountCreation=”,“=”+accountManager.supportsAccountCreation());
//Log.e(“=getAccountInstructions=”,“=”+accountManager.getAccountInstructions());
Map attributes=newhashmap();
属性。放置(“电子邮件”kanta@signitysolutions.in");
属性。放置(“用户名”、“spota421”);
if(accountManager!=null&&accountManager.supportsAccountCreation(){
accountManager.SensitiveOperationVerinseCureConnection(true);
accountManager.createAccount(“spota421”,“xxxxx”,属性);
}
} 
下面是我在控制台中得到的回应,请任何人指导我,我做错了什么

 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)
D/SMACK:SENT(0):
10-02 07:40:21.670 7216-7330/
D/SMACK:RECV(0):
org.jivesoftware.smack.XMPPException$XMPPErrorException:XMPPError:jid格式不正确-修改
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:位于org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:位于org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213)
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:位于org.jivesoftware.smackx.iqregister.AccountManager.getRegistrationInfo(AccountManager.java:332)
10-02 07:40:21.675 7216-7216/com.signity.spota W/System.err:位于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)

试试这个,我希望它能起作用

     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();
                }


            }
if(XMPPConnection!=null&&XMPPConnection.isConnected()){
Log.e(“=AccountManager=”,“AccountManager”);
AccountManager=AccountManager.getInstance(XMPPConnection);
Map attributes=newhashmap();
试一试{
if(accountManager!=null&&accountManager.supportsAccountCreation(){
accountManager.SensitiveOperationVerinseCureConnection(true);
Jid Jid=JidCreate.entityBareFrom(“spot123”+“@”+“yourOpenFireService作为字符串”);
accountManager.createAccount(jid.getLocalpartOrNull(),“Spot1234sdfsd”,属性);
}
}捕获(SmackException.NoResponseException e){
e、 printStackTrace();
}捕获(XMPPException.XMPPErrorException){
e、 printStackTrace();
}捕捉(SmackException.NotConnectedException e){
e、 printStackTrace();
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(xmppstringpreception e){
e、 printStackTrace();
}
}

试试这个,我希望它能起作用

     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();
                }


            }
if(XMPPConnection!=null&&XMPPConnection.isConnected()){
Log.e(“=AccountManager=”,“AccountManager”);
AccountManager=AccountManager.getInstance(XMPPConnection);
Map attributes=newhashmap();
试一试{
if(accountManager!=null&&accountManager.supportsAccountCreation(){
accountManager.SensitiveOperationVerinseCureConnection(true);
Jid Jid=JidCreate.entityBareFrom(“spot123”+“@”+“yourOpenFireService作为字符串”);
accountManager.createAccount(jid.getLocalpartOrNull(),“Spot1234sdfsd”,属性);
}
}捕获(SmackException.NoResponseException e){
e、 printStackTrace();
}捕获(XMPPException.XMPPErrorException){
e、 printStackTrace();
}捕捉(SmackException.NotConnectedException e){
e、 printStackTrace();
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(xmppstringpreception e){
e、 printStackTrace();
}
}

我有点晚了,但是您应该转义JID或者需要删除/替换JID元字符集。

我有点晚了,但是您应该转义JID或者需要删除/替换JID元字符集。

您可以使用这个XMPP Restful Api创建用户。读博士,我希望你能解决。好的,但你们知道我为什么会出现上述错误吗?是的,这个为我提供的工作解决方案你们可以使用这个XMPP Restful Api创建用户。雷亚