我一直试图从我的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();
任何帮助都非常感谢。
答案 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。