ConnectionException when trying to connect to XMPP server from aSmack Android client

孤者浪人 提交于 2019-11-26 18:36:45

问题


I have been trying to connect to my (locally hosted) Openfire XMPP server from my aSmack Android client for hours now, and it's still not working.

I get a org.jivesoftware.smack.SmackException$ConnectionException and that's it.

Code:

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

Server is up and running.

Host is my server name, tried my host name too, tried different ports... Also tried to launch the connect() method from another thread. Tried to use a login or anonymous connection, but Exception is thrown before even that, at line: connection.connect();

Any help highly appreciated.


回答1:


I get a org.jivesoftware.smack.SmackException$ConnectionException and that's it.

No, it's not. If you look at the javadoc for ConnectionException:

ConnectionException is thrown if Smack is unable to connect to all hosts of a given XMPP service. The failed hosts can be retrieved with getFailedAddresses(), which will have the exception causing the connection failure set and retrievable with HostAddress.getException().

So call ConnectionException.getFailedAddresses() to retrieve the list and check with HostAddress.getException() what caused Smack to be unable to connect to the host.




回答2:


It throws exception as you can't make network operation on Android main thread, you should move it to another thread.




回答3:


**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.



回答4:


Try the below code. It's working for me:

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

then connect and login




回答5:


Try to add

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

to your manifest. Because that your application cannot connect to the Internet.



来源:https://stackoverflow.com/questions/25998575/connectionexception-when-trying-to-connect-to-xmpp-server-from-asmack-android-cl

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!