尝试从aSmack Android客户端连接到XMPP服务器时出现ConnectionException

时间:2014-09-23 15:08:34

标签: xmpp smack asmack

我一直试图从我的aSmack Android客户端连接到我的(本地托管的)Openfire XMPP服务器几个小时,但它仍然无法正常工作。

我得到了org.jivesoftware.smack.SmackException$ConnectionException,就是这样。

代码:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SmackAndroid.init(getApplicationContext());
    connect();
}

private boolean connect(){
    XMPPConnection connection = new XMPPTCPConnection(HOST);
    try{
        connection.connect();
        connection.login("user", "user");
    }catch (Exception e){
        e.printStackTrace();
    }
    return true;
}

服务器已启动并正在运行。

主机是我的服务器名称,也尝试了我的主机名,试过不同的端口...... 还尝试从另一个线程启动connect()方法。 试图使用登录或匿名连接,但在此之前抛出异常,在行:connection.connect();

任何帮助都非常感谢。

5 个答案:

答案 0 :(得分:4)

  

我得到一个org.jivesoftware.smack.SmackException $ ConnectionException和   就是这样。

不,不是。如果你看一下javadoc for ConnectionException

  

如果Smack无法连接到所有连接,则抛出ConnectionException   给定XMPP服务的主机。可以使用检索失败的主机   getFailedAddresses(),它将导致异常   连接失败设置和可检索   HostAddress.getException()。

因此请调用ConnectionException.getFailedAddresses()来检索列表,并使用HostAddress.getException()检查导致Smack无法连接到主机的原因。

答案 1 :(得分:0)

它会引发异常,因为您无法在Android主线程上进行网络操作,您应该将其移至另一个线程。

答案 2 :(得分:0)

**XMPPTCPConnection connection is already configured so please check the connection before creating object of XMPPTCPConnection class.**

XMPPTCPConnection  connection;
 if (connection != null) {
connection = null;//make it null 
  }
connection = new XMPPTCPConnection(config.build());

I am getting this same problem but now it has been fixed try it is working.

答案 3 :(得分:-1)

尝试以下代码。它对我有用:

AndroidConnectionConfiguration config = new AndroidConnectionConfiguration(HOST);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
XMPPConnection connection = new XMPPConnection(config);

然后连接并登录

答案 4 :(得分:-3)

尝试添加

<uses-permission android:name="android.permission.INTERNET" />

到你的清单。因为您的应用程序无法连接到Internet。