Несколько запросов с QNetworkAccessManager - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь отправить два запроса A, который получает токен аутентификации, и B, который использует токен для получения информации о пользователе.

Вот упрощенная версия моего кода:

MyClass::MyClass()
: _manager(new QNetworkAccessManager(this)),
_token(QString()) {
}


void MyClass::authentificationRequest(const QString &username,       
                                     const QString &password) {

    QString credentials =  QString("email=%0&password=%1").arg(username, password);
    QNetworkRequest request(QUrl("https://a.com/log"));
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    QNetworkReply *reply = _manager->post(request, credentials.toUtf8());
    connect(reply, &QNetworkReply::finished, this, &MyClass::reply);
}

void MyClass::userInfoRequest() {

    QNetworkRequest request(QUrl("https://a.com/info"));
    request.setRawHeader("Authorization", QByteArray("Bearer " + _token.toUtf8()));
    QNetworkReply *reply = _manager->get(request);
    connect(reply, &QNetworkReply::finished, this, &MyClass::reply);
}

void MyClass::reply() {

    QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());

    if (reply->url() == QUrl { "https://a.com/log" }) {
        storeToken(reply);
        userInfoRequest();
    }

    if (reply->url() == QUrl { "https://a.com/info" }) {
            if (reply->error() == QNetworkReply::NoError) {
            qDebug() << "reading: " << reply->readAll();
        } else {
            qDebug() << reply->error();
        }
    }

    reply->deleteLater();
}

Первый запрос получает ответ, а второй - нет.Буду признателен, если у кого-то есть объяснение?Заранее спасибо.

...