@terminator-light

Как отправить request headers Cookie в Qt?

mainwindow.h
private:
    QList<QNetworkCookie> cookies;

в конструкторе:
cookie.setName("visible");
    cookie.setValue("0");
    cookie.setDomain("site.ru");
    cookie.setPath("/dev/mobile");
    cookie.setExpirationDate(QDateTime().addYears(9999));

    cookies << cookie;

метод, отправляющий запрос с куками:
void MainWindow::sendRequest(const QString& urlString){
    log("sendRequest");
    QTimer timer;
    timer.setInterval(3000);
    timer.setSingleShot(true);

    QEventLoop loop;
    currentUrlString = urlString;
    url->setUrl(urlString);
    request->setUrl(*url);

    request->setHeader(QNetworkRequest::CookieHeader, qVariantFromValue(cookies));
    qDebug() << "Cookie:" << request->header(QNetworkRequest::CookieHeader).toList();
    QNetworkReply* reply  = manager->get(*request);
    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    QObject::connect(&timer, &QTimer::timeout, reply, &QNetworkReply::abort);
    timer.start();
    loop.exec();
}

Когда так проверяю,
qDebug() << "Cookie:" << request->header(QNetworkRequest::CookieHeader).toList();

список пустой, получается, что куки не отправляются
  • Вопрос задан
  • 1089 просмотров
Решения вопроса 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Посмотрите внимательно, что возвращает QVariant::toList.
Вам надо преобразовывать явно:
request->header(QNetworkRequest::CookieHeader).value<QList<QNetworkCookie>>()


PS
Эта конструкция устаревшая: qVariantFromValue. Используйте QVariant::fromValue().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы