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有关,我也希望解决这个无响应问题