Smack 4.1: Списък за презареждане на изключения

Продължавам да получавам едно и също съобщение за грешка отново и отново. Първо си помислих, че това е проблем с времето за изчакване, така че зададох .setPacketReplyTimeout(15000);still просто се случва да изчака по-дълго, след което показва същото съобщение за грешка. При по-задълбочени открития открих, че е защото очакваше нещо от сървъра (Какво може да е това?). Също така открих, че можете да setRosterLoadedAtLogin(false)но не е ясно как, тъй като XMPPTCPConnectionConfigurationне разполага с този метод, т.е. 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): [email protected], 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)

person Tunde Dev    schedule 09.06.2015    source източник
comment
здрасти Човекът, който ви отхвърли, без да остави коментар, изглежда има проблеми. Можете да намерите setRosterLoadedAtLogin в списък. roster = Roster.getInstanceFor(connection); roster.setRosterLoadedAtLogin(true); Знам, че е включен със smack 4.2 Също така търся решение на този проблем с NoResponse   -  person mugume david    schedule 14.10.2015


Отговори (3)


ето моята свалка:

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(), така че мисля, че времето, когато затваряме връзката, е грешно.

person Lait    schedule 07.07.2015

@Override
    protected void onDestroy() {
        super.onDestroy();
        con.disconnect();
    }

Намирам, че ако използваме con.disconnect(); в onDestroy() или onPause(), няма да получи грешката Exception reloading roster

person Lait    schedule 09.07.2015

Може би открих истинската причина, която е правилната ми работа в проекта на кода по-долу:

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();
    }
person Lait    schedule 30.11.2015