Приветствую всех!
Задача: загрузка разных страниц одного сайта, с возможностью использования ранее выданных куков
Простейшее приложение загружает страницу с локалхоста.
C++ (Qt)
#include <QtCore>
#include <QApplication>
#include <QDebug>
#include <QtNetwork>
class MyCookieJar : public QNetworkCookieJar
{
public:
QList<QNetworkCookie> getAllCookies() { return allCookies(); }
};
class CookiesTest : public QObject
{
Q_OBJECT
public:
CookiesTest(QWidget* parent = 0);
private slots:
void replyFinished(QNetworkReply*);
private:
QNetworkAccessManager* manager;
MyCookieJar *cookieJar;
};
CookiesTest::CookiesTest(QWidget* parent)
{
manager = new QNetworkAccessManager;
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
cookieJar = new MyCookieJar;
manager->setCookieJar(cookieJar);
manager->get(QNetworkRequest(QUrl("http://test1.ru/test/cookie.php")));
manager->get(QNetworkRequest(QUrl("http://test1.ru/test/cookie.php")));
}
void CookiesTest::replyFinished(QNetworkReply* reply)
{
qDebug() << reply->readAll();
qDebug() << "getAllCookies: " << cookieJar->getAllCookies();
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
CookiesTest cookiesTest;
return app.exec();
}
#include "main.moc"
в файле pro соответственно QT += network
Файл cookie.php показывает кол-во посещений данной страницы на анализе кука
PHP
<?php
if (isset($_COOKIE['Mortal'])) $cnt = $_COOKIE['Mortal'] + 1;
else $cnt = 1;
setcookie("Mortal",$cnt,0x6FFFFFFF);
echo "NUM: [".@$_COOKIE['Mortal']."]";
?>
На выходе имеем:
"NUM: []"
getAllCookies: (QNetworkCookie("Mortal=1; expires=Wed, 18-Jul-2029 05:49:51 GMT; domain=test1.ru; path=/test/") )
"NUM: []"
getAllCookies: (QNetworkCookie("Mortal=1; expires=Wed, 18-Jul-2029 05:49:51 GMT; domain=test1.ru; path=/test/") )
Хотя должно быть во второй раз в квадратных скобках цифра 1, а во втором getAllCookies: Mortal=2
Подскажите пожалуйста, где кроется ошибка, что не так? Почему куки не сохраняются на 2м запросе