crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QSessionManager commitData
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
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())
    {
        ...
    }
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);
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 20:00