关于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试了试都成功了,此时的我已经吐血了
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试了试都成功了,此时的我已经吐血了
相关文章推荐
- 解决因手机客户端android网络不稳定而导致asmack不能自动重连接openfire的问题
- 手机客户端android网络不稳定而导致asmack不能自动重连接openfire的问题
- Android客户端移动流量无法登陆OpenFire服务端及长时间无响应登链接中断问题
- Asmack客户端无法连接Openfire服务器问题的解决
- 关于android客户端访问网络数据的问题
- android开发中关于adb连接的一个典型问题:
- 关于在android系统移植中usb的连接问题
- 关于android官方提供的BluetoothChat源码连接不上蓝牙适配器的问题
- 关于android音频连接外部设备 并配对的问题
- 关于xmpp连接openfire服务器的一些常见问题
- Xmpp协议 OpenFire服务器 Asmack Android客户端 一些Bug的解决方法
- [原创]关于cvs客户端(ECLIPSE内置)连接CVS服务器中文乱码问题解决方案
- Android客户端,PC服务器,Socket连接所遇到的问题
- Mark一下,一上午就这么过去了,关于客户端连接oracle10G的问题
- 关于android(客户端)与j2se(服务器端)数据加解密不一致问题
- Android中的socket编程-关于设置连接的ip问题
- Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现【2】创建连接,登录openfire服务端
- 关于连接网络时抛出“android.os.NetworkOnMainThreadException”异常问题
- 关于Android 中AVD连接不上的问题
- Android开发——本机Tomcat搭建服务器,客户端socket网络连接不上问题以及D-LINK端口转发设置