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.
Try the below code. It's working for me:
then connect and login
Try to add
to your manifest. Because that your application cannot connect to the Internet.
No, it's not. If you look at the javadoc for
ConnectionException
:So call
ConnectionException.getFailedAddresses()
to retrieve the list and check withHostAddress.getException()
what caused Smack to be unable to connect to the host.It throws exception as you can't make network operation on Android main thread, you should move it to another thread.