Доброго времени! У меня есть 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;
}
}
};
session->terminateSession(User::instance()->sessionId(),true);
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);
Попробуйте в конец функции 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)