我正在关注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的方式是默认的,我也使用它的嵌入式数据库。请帮我解决我的问题。