如何使用openfire(xmpp服务器)连接asmack(xmpp客户端库)?

时间:2014-11-26 04:30:47

标签: android connection xmpp openfire asmack

我正在关注Smack Documentation的快速指南,让我将我的asmack xmpp客户端与openfire xmpp服务器连接起来。但不幸的是,我在遵循smack文档中的代码时遇到了异常错误。

因为我实际上并没有使用smack而是使用asmack(用于android的smack版本),我从here读取我应该调用SmackAndroid.init(Context)以便在Android或Smack上初始化Smack不能按预期工作。

我还要构建add和dnsjava库,让我执行这一行代码SmackAndroid.init(Context)。我认为这些步骤将解决我的问题,连接asmack客户端与openfire服务器,但事实并非如此。

这是我的代码:

public class MainActivity extends Activity {

    public static final String HOST = "Kirbys-Mac-mini.local";
    public static final int PORT = 5222;

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

        new ConnectToServer().execute();
    }

    private class ConnectToServer extends AsyncTask <Void, Void, Void>{

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            SmackAndroid.init(MainActivity.this);

            boolean isConnected = false;

            ConnectionConfiguration config = new ConnectionConfiguration(HOST, PORT);
            XMPPConnection conn2 = new XMPPTCPConnection(config);

            try {
                conn2.connect();
                isConnected = true;
            } 
            catch (IOException e){
                Log.e("XMPPIOExceptionj", e.toString());
            } catch (SmackException e){
                Log.e("XMPPSmackException", e.toString()+" Host:"+conn2.getHost()+"Port:"+conn2.getPort());
            } catch (XMPPException e){
                Log.e("XMPPChatDemoActivity", "Failed to connect to "+ conn2.getHost());
                Log.e("XMPPChatDemoActivity", e.toString());
            }

            return null;
        }

运行应用程序后,错误将显示在我的logcat中,因为连接到我的服务器时发生了错误。这些是异常捕获的错误:

11-26 04:24:19.783: E/XMPPSmackException(3964): org.jivesoftware.smack.SmackException$ConnectionException Host:nullPort:0

我现在不知道为什么这会发生在我的应用中。即使我设置我的openfire的方式是默认的,我也使用它的嵌入式数据库。请帮我解决我的问题。

0 个答案:

没有答案