我已经尝试从我的 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;
}
Run Code Online (Sandbox Code Playgroud)
服务器已启动并正在运行。
Host 是我的服务器名称,也尝试了我的主机名,尝试了不同的端口...还尝试从另一个线程启动 connect() 方法。尝试使用登录或匿名连接,但在此之前抛出异常,在行:connection.connect();
非常感谢任何帮助。
我得到一个 org.jivesoftware.smack.SmackException$ConnectionException ,就是这样。
不,这不对。如果您查看javadocConnectionException:
如果 Smack 无法连接到给定 XMPP 服务的所有主机,则会引发 ConnectionException。可以使用 getFailedAddresses() 检索失败的主机,这将产生导致连接失败的异常,并可以使用 HostAddress.getException() 进行检索。
因此,调用ConnectionException.getFailedAddresses()检索列表并检查HostAddress.getException()导致 Smack 无法连接到主机的原因。