Xmpp 获得;内部服务器错误(500)";使用Smack和Openfire调用花名册.createEntry()时的错误响应

Xmpp 获得;内部服务器错误(500)";使用Smack和Openfire调用花名册.createEntry()时的错误响应,xmpp,openfire,smack,asmack,Xmpp,Openfire,Smack,Asmack,嗨,我正在使用一个简单的OpenFire服务器从Android设备向其他用户发送消息。我正在android中使用asmack jar。这是我正在使用的类: public class XmppManager { private static final int packetReplyTimeout = 500; // millis private String server; private int port; private ConnectionConfiguration config;

嗨,我正在使用一个简单的OpenFire服务器从Android设备向其他用户发送消息。我正在android中使用asmack jar。这是我正在使用的类:

public class XmppManager {

private static final int packetReplyTimeout = 500; // millis

private String server;
private int port;

private ConnectionConfiguration config;
private XMPPConnection connection;

private ChatManager chatManager;
private MessageListener messageListener;

public XmppManager(String server, int port) {
    this.server = server;
    this.port = port;
}

public void init() throws XMPPException {


    System.out.println(String.format("Initializing connection to server %1$s port %2$d", server, port));

    SmackConfiguration.setPacketReplyTimeout(packetReplyTimeout);


    config = new ConnectionConfiguration(server, port);
    config.setSASLAuthenticationEnabled(false);
    config.setSecurityMode(SecurityMode.disabled);

    connection = new XMPPConnection(config);
    connection.connect();

    System.out.println("Connected: " + connection.isConnected());

    chatManager = connection.getChatManager();
    messageListener = new MyMessageListener();

}

public void performLogin(String username, String password) throws XMPPException {
    if (connection!=null && connection.isConnected()) {
        connection.login(username, password);
    }
}

public void setStatus(boolean available, String status) {

    Presence.Type type = available? Type.available: Type.unavailable;
    Presence presence = new Presence(type);

    System.out.println("PRESENCE"+type+" "+available);

    presence.setPriority(1);
    presence.setStatus(status);
    connection.sendPacket(presence);

}

public void destroy() {
    if (connection!=null && connection.isConnected()) {
        connection.disconnect();
    }
}

public void sendMessage(String message, String buddyJID) throws XMPPException {
    System.out.println(String.format("Sending mesage '%1$s' to user %2$s", message, buddyJID));
    Chat chat = chatManager.createChat(buddyJID, messageListener);
    chat.sendMessage(message);
}

public void createEntry(String user, String name) throws Exception {
    System.out.println(String.format("Creating entry for buddy '%1$s' with name %2$s", user, name));
    Roster roster = connection.getRoster();
    roster.createEntry(user, name, null);
}

class MyMessageListener implements MessageListener {

    @Override
    public void processMessage(Chat chat, Message message) {
        String from = message.getFrom();
        String body = message.getBody();
        System.out.println(String.format("Received message '%1$s' from %2$s", body, from));
    }

}

 }
所使用的活动是

     public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    try{
    SmackAndroid.init(getApplicationContext());
    }catch(Exception e)
    {
        e.printStackTrace();


    }

    new XmppMessage().execute(); 
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

private class XmppMessage extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {

        try {
            XmppManager manager = new XmppManager("192.168.1.6", 5222);

            manager.init();
            manager.performLogin("admin", "root");
            manager.setStatus(true, "I am mobile");

            /* String buddyJID = "test@192.168.1.6";
                String buddyName = "test";
                manager.createEntry(buddyJID, buddyName);

                manager.sendMessage("Hello mate", "test@192.168.1.6");
                */
                boolean isRunning = true;

                while (isRunning) {
                    Thread.sleep(50);
                }

                manager.destroy();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "Executed";
    }

    @Override
    protected void onPostExecute(String result) {

    }

    @Override
    protected void onPreExecute() {}

    @Override
    protected void onProgressUpdate(Void... values) {}
}

}

我试过使用smack.jar和asmack.jar。我也使用了AndroidSmack.init(),但仍然存在相同的错误。请帮助我了解这一点。

我还收到一个500错误,因为我以前登录的用户在服务器上不存在。

这与问题有什么关系?
  01-13 17:53:12.696: W/System.err(22946): internal-server-error(500)
  01-13 17:53:12.696: W/System.err(22946):  at org.jivesoftware.smack.Roster.createEntry(Roster.java:303)
  01-13 17:53:12.696: W/System.err(22946):  at com.twis.demochat.XmppManager.createEntry(XmppManager.java:91)
  01-13 17:53:12.706: W/System.err(22946):  at com.twis.demochat.MainActivity$XmppMessage.doInBackground(MainActivity.java:50)
  01-13 17:53:12.706: W/System.err(22946):  at com.twis.demochat.MainActivity$XmppMessage.doInBackground(MainActivity.java:1)
  01-13 17:53:12.706: W/System.err(22946):  at android.os.AsyncTask$2.call(AsyncTask.java:264)
  01-13 17:53:12.706: W/System.err(22946):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  01-13 17:53:12.706: W/System.err(22946):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
  01-13 17:53:12.706: W/System.err(22946):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
  01-13  17:53:12.716: W/System.err(22946):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
  01-13 17:53:12.716: W/System.err(22946):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
  01-13 17:53:12.716: W/System.err(22946):  at java.lang.Thread.run(Thread.java:864)