Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QSessionManager commitData

Автор: thanatos_404 29.6.2012, 13:19

Доброго времени! У меня есть 2 вопроса.
1) при логауте commitData вызывается 2 раза
2) в commitData вызывается метод, который отправляет запрос к веб-серверу для завершения сессии. И после начала выполнения post'a приложение закрывается, не дождавшись ответа от сервера. Куда смотреть в этом случае?
код TBApplication

class TBApplication : public QtSingleApplication
{
    Q_OBJECT
public:
    TBApplication(int argc, char *argv[])
        :QtSingleApplication(argc,argv)
    {
    }

    void commitData(QSessionManager &sm)
    {
        qDebug()<<"TBApplication::commitData";
        if(sm.isPhase2())
        {
            sm.requestPhase2();
            qDebug()<<"TBApplication::Phase 2";
        }
        if(User::instance()->sessionId()!="")
        {
            qDebug()<<"TBApplication::Session not clear";
            ApplicationController::kill();
            sm.requestPhase2();
        }
        else
        {
            qDebug()<<"TBApplication::Session is clear";
            return;
        }
    }
};


В методе kill вызываетсся метод terminateSession
session->terminateSession(User::instance()->sessionId(),true);

Кот метода terminateSession
 QNetworkRequest request;
    QMap<QString,QVariant> params;
    this->quit = quit;
    QByteArray data;
    params.insert("id",session_id);
    request = performRequest("terminate", params, data);
    QNetworkReply *reply = sslManager->post(request,data);

Автор: sidsukana 29.6.2012, 13:39

Попробуйте в конец функции terminateSession добавить вот такое.

QEventLoop loop;
    connect(this, SIGNAL(rejected()), &loop, SLOT(quit()));
    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit()));
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();

    if (reply->isFinished())
    {
        ...
    }

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)