您的位置:首页 > 移动开发 > Android开发

关于XMPP协议android客户端和openfire的连接问题

2015-02-05 23:43 197 查看
今晚写了一个关于XMPP协议的即时通信客户端,结果遇到了一箩筐的问题,首先是手贱升级了ADT到17版本,结果发现导入的asmack.jar竟然出现这样奇葩的问题,

02-05 21:50:09.648: E/dalvikvm(19473): Could not find class 'org.jivesoftware.smack.ConnectionConfiguration', referenced from method com.Connet.XmppConn.openConnection

02-05 21:50:09.649: E/AndroidRuntime(19473): FATAL EXCEPTION: Thread-621622

02-05 21:50:09.649: E/AndroidRuntime(19473): java.lang.NoClassDefFoundError: org.jivesoftware.smack.ConnectionConfiguration

02-05 21:50:09.649: E/AndroidRuntime(19473): at com.Connet.XmppConn.openConnection(XmppConn.java:10)

02-05 21:50:09.649: E/AndroidRuntime(19473): at com.Connet.XmppConn.getConnection(XmppConn.java:25)

02-05 21:50:09.649: E/AndroidRuntime(19473): at com.registAndlogin.Register$2.run(Register.java:54)

02-05 21:50:09.649: E/AndroidRuntime(19473): at java.lang.Thread.run(Thread.java:838)

百度找了很久,终于发现了一篇博客有介绍,我靠,全是英文的,发个链接http://lvyaojia.sinaapp.com/2012/05/asmack/

历经千辛万苦终于解决了,后来发现有中文的办法。。。这个链接很详细http://mikewang.blog.51cto.com/3826268/820743/

本以为成功了,谁知一运行,又出现这样的错误

02-05 22:31:24.358: E/AndroidRuntime(8864): FATAL EXCEPTION: Thread-633699

02-05 22:31:24.358: E/AndroidRuntime(8864): java.lang.IllegalStateException: Not connected to server.

02-05 22:31:24.358: E/AndroidRuntime(8864): at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:488)

02-05 22:31:24.358: E/AndroidRuntime(8864): at com.registAndlogin.Register.register(Register.java:88)

02-05 22:31:24.358: E/AndroidRuntime(8864): at com.registAndlogin.Register.access$2(Register.java:76)

02-05 22:31:24.358: E/AndroidRuntime(8864): at com.registAndlogin.Register$2.run(Register.java:55)

02-05 22:31:24.358: E/AndroidRuntime(8864): at java.lang.Thread.run(Thread.java:838)

在调用connect()的方法时候出现了错误。然后百度,查文档,里面有的朋友说需要设置openfire里面的服务器设置——>安全设置——>客户端安全连接中的非必须改为自定义,要入图这样子



后来发现,还是不行,试了几次发现只要在电脑客户端spark能正常通信,服务器就基本没问题了,除了偶尔ip地址变动会出错外。那怎么办,这问题还是要解决的,然后有朋友说

ConnectionConfiguration config = new ConnectionConfiguration("192.155.1.102", 5222);

//configuration设置,可以不用设置

/*config.setReconnectionAllowed(true);

config.setCompressionEnabled(false);

config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);

config.setSASLAuthenticationEnabled(false); */

发现还是不行,后来试了,不管有没有加,都是可以的。

那怎么办,最后检查发现竟然忘记权限了,没有写internet权限,接着试了试,我靠,还是不行,啥情况啊,快奔溃了,不气馁。接着继续,发现如果使用手机调试必须是连接wifi为局域网才可以连接,否则是不行的,最后的最后,利用模拟器试了试和连接wifi试了试都成功了,此时的我已经吐血了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐