Android Smack 4.1:异常重新加载花名册
我一次又一次地收到相同的错误消息。起初我认为这是一个超时问题,所以我设置了Android Smack 4.1:异常重新加载花名册,android,smack,Android,Smack,我一次又一次地收到相同的错误消息。起初我认为这是一个超时问题,所以我设置了.setPacketReplyTimeout(15000)仍然只是碰巧等待更长时间,然后显示相同的错误消息。在更深入的研究中,我发现这是因为它期望从服务器得到一些东西(可能是什么?)。我还发现,您可以setRosterLoadedAtLogin(false),但不清楚如何设置,因为xmpptcpcConnectionConfiguration没有该方法,即configBuilder.setRosterLoadedAtLog
.setPacketReplyTimeout(15000)代码>仍然只是碰巧等待更长时间,然后显示相同的错误消息。在更深入的研究中,我发现这是因为它期望从服务器得到一些东西(可能是什么?)。我还发现,您可以setRosterLoadedAtLogin(false)
,但不清楚如何设置,因为xmpptcpcConnectionConfiguration
没有该方法,即configBuilder.setRosterLoadedAtLogin(false)
。这里是垃圾场。我想要一个关于发生了什么以及如何修复它的好解释。多谢各位
06-09 01:04:25.122 3192-3214/com.company.smacklearn E/Roster﹕ Exception reloading roster
org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: IQReplyFilter: iqAndIdFilter (AndFilter: (OrFilter: (IQTypeFilter: type=error, IQTypeFilter: type=result), StanzaIdFilter: id=AUQtk-7)), : fromFilter (OrFilter: (FromMatchesFilter (full): null, FromMatchesFilter (bare): user@myserver.com, FromMatchesFilter (full): myserver.com)).
at org.jivesoftware.smack.AbstractXMPPConnection$6.run(AbstractXMPPConnection.java:1438)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
这是我的垃圾桶:
07-07 18:06:31.469 7218-7260/cc.lait.d2.smack_demo E/Roster﹕ Exception reloading roster
org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: IQReplyFilter: iqAndIdFilter (AndFilter: (OrFilter: (IQTypeFilter: type=error, IQTypeFilter: type=result), StanzaIdFilter: id=s3Dmr-7)), : fromFilter (OrFilter: (FromMatchesFilter (full): null, FromMatchesFilter (bare): e02b65a7bdc0f12662ac0d617e7eb3d1@iz23qr9ipxwz, FromMatchesFilter (full): iz23qr9ipxwz)).
at org.jivesoftware.smack.AbstractXMPPConnection$6.run(AbstractXMPPConnection.java:1438)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
最近几天我也开始使用smack4.1,遇到了一个类似的错误,执行了测试,因为我使用了con.disconnect()代码>。在smack 4.1中,我们找不到setRosterLoadedAtLogin()
,因此我认为我们关闭连接的时间是错误的
@Override
protected void onDestroy() {
super.onDestroy();
con.disconnect();
}
我发现如果我们使用con.disconnect()代码>在onDestroy()
或onPause()
中,它不会得到错误异常重新加载花名册
也许我在下面的代码项目中找到了正确操作的真正原因:
try {
ConnectionConfiguration config = new ConnectionConfiguration(OF_HOST, OF_PORT);
config.setReconnectionAllowed(true);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setSendPresence(true);
config.setDebuggerEnabled(true);
config.setCompressionEnabled(false);
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
connection = new XMPPTCPConnection(config);
Log.i("connection", connection.toString());
if (connection.isConnected()) {
connection.disconnect();
}
connection.connect();
return connection;
} catch (Exception e) {
e.printStackTrace();
}
你好那个投票否决你却没有留下评论的家伙似乎有问题。您可以在花名册上找到setRosterLoadedAtLogin
<代码>花名册=花名册.getInstanceFor(连接);花名册.setRosterLoadedAtLogin(true)代码>我知道它与smack 4.2有关,我也希望解决这个无响应问题