Thank you very much ChrisW67! It works. 
Perhaps I still misunderstand something, but that's an option for some reason just does not work, cookies Mortal = 1
#include <QtCore>
#include <QApplication>
#include <QDebug>
#include <QtNetwork>
class MyCookieJar : public QNetworkCookieJar
{
public:
QList<QNetworkCookie> getAllCookies() { return allCookies(); }
};
{
Q_OBJECT
public:
private slots:
void replyFinished(QNetworkReply*);
void doAnother();
private:
QNetworkAccessManager* manager;
MyCookieJar *cookieJar;
};
CookiesTest
::CookiesTest(QWidget* parent
){
manager = new QNetworkAccessManager;
cookieJar = new MyCookieJar;
manager->setCookieJar(cookieJar);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}
void CookiesTest::replyFinished(QNetworkReply* reply)
{
qDebug() << reply->readAll();
qDebug() << "getAllCookies: " << cookieJar->getAllCookies();
}
void CookiesTest::doAnother() {
manager->get(QNetworkRequest(myUrl));
}
void CookiesTest
::download(QString url
) {
QTimer::singleShot(500,
this,
SLOT(doAnother
()));
}
int main(int argc, char* argv[])
{
CookiesTest cookiesTest;
cookiesTest.download("http://test1.ru/test/cookie.php");
cookiesTest.download("http://test1.ru/test/cookie.php");
return app.exec();
}
#include "main.moc"
#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);
void download(QString);
private slots:
void replyFinished(QNetworkReply*);
void doAnother();
private:
QNetworkAccessManager* manager;
MyCookieJar *cookieJar;
QUrl myUrl;
};
CookiesTest::CookiesTest(QWidget* parent)
{
manager = new QNetworkAccessManager;
cookieJar = new MyCookieJar;
manager->setCookieJar(cookieJar);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}
void CookiesTest::replyFinished(QNetworkReply* reply)
{
qDebug() << reply->readAll();
qDebug() << "getAllCookies: " << cookieJar->getAllCookies();
}
void CookiesTest::doAnother() {
manager->get(QNetworkRequest(myUrl));
}
void CookiesTest::download(QString url)
{
myUrl = QUrl(url);
QTimer::singleShot(500, this, SLOT(doAnother()));
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
CookiesTest cookiesTest;
cookiesTest.download("http://test1.ru/test/cookie.php");
cookiesTest.download("http://test1.ru/test/cookie.php");
return app.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Output:
"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/") )
But I found another solution to this
#include <QtCore>
#include <QApplication>
#include <QDebug>
#include <QtNetwork>
class MyCookieJar : public QNetworkCookieJar
{
public:
QList<QNetworkCookie> getAllCookies() { return allCookies(); }
};
{
Q_OBJECT
public:
private:
QNetworkAccessManager* manager;
MyCookieJar *cookieJar;
QList<QNetworkCookie> cookiesList;
};
{
manager = new QNetworkAccessManager;
cookieJar = new MyCookieJar();
manager->setCookieJar(cookieJar);
}
void CookiesTest
::download(QString url
) {
}
void CookiesTest
::_download
(QUrl url
) {
//enters event loop, simulate blocking io
t.setSingleShot(true);
connect(&t, SIGNAL(timeout()), &q, SLOT(quit()));
QNetworkReply *reply = manager->get(QNetworkRequest(url));
connect(reply, SIGNAL(finished()), &q, SLOT(quit()));
t.start(5000);
q.exec();
if (t.isActive()) {
t.stop();
qDebug() << response;
QVariant redirectionTarget
= reply
->attribute
(QNetworkRequest
::RedirectionTargetAttribute);
if (reply->error()) {
qDebug()<< "Download failed" << reply->errorString();
} else if (!redirectionTarget.isNull()) {
QUrl newUrl
= url.
resolved(redirectionTarget.
toUrl());
qDebug()<< "Redirect to" << newUrl.toString();
url = newUrl;
// reply->deleteLater();
_download(url);
} else {
qDebug() << "Finish! ";
}
reply->deleteLater();
} else {
qDebug() << "Timeout";
}
cookiesList = cookieJar->getAllCookies();
qDebug() << "getAllCookies: " << cookiesList;
}
int main(int argc, char* argv[])
{
CookiesTest cookiesTest;
cookiesTest.download("http://test1.ru/test/cookie.php");
cookiesTest.download("http://test1.ru/test/cookie.php");
cookiesTest.download("http://test1.ru/test/cookie.php");
return app.exec();
}
#include "main.moc"
#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(QObject *parent = 0);
void download(QString);
void _download(QUrl);
private:
QNetworkAccessManager* manager;
MyCookieJar *cookieJar;
QList<QNetworkCookie> cookiesList;
};
CookiesTest::CookiesTest(QObject *parent) : QObject(parent)
{
manager = new QNetworkAccessManager;
cookieJar = new MyCookieJar();
manager->setCookieJar(cookieJar);
}
void CookiesTest::download(QString url)
{
_download(QUrl(url));
}
void CookiesTest::_download(QUrl url)
{
//enters event loop, simulate blocking io
QEventLoop q;
QTimer t;
t.setSingleShot(true);
connect(&t, SIGNAL(timeout()), &q, SLOT(quit()));
QNetworkReply *reply = manager->get(QNetworkRequest(url));
connect(reply, SIGNAL(finished()), &q, SLOT(quit()));
t.start(5000);
q.exec();
if (t.isActive()) {
t.stop();
QByteArray response = reply->readAll();
qDebug() << response;
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (reply->error()) {
qDebug()<< "Download failed" << reply->errorString();
} else if (!redirectionTarget.isNull()) {
QUrl newUrl = url.resolved(redirectionTarget.toUrl());
qDebug()<< "Redirect to" << newUrl.toString();
url = newUrl;
// reply->deleteLater();
_download(url);
} else {
qDebug() << "Finish! ";
}
reply->deleteLater();
} else {
qDebug() << "Timeout";
}
cookiesList = cookieJar->getAllCookies();
qDebug() << "getAllCookies: " << cookiesList;
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
CookiesTest cookiesTest;
cookiesTest.download("http://test1.ru/test/cookie.php");
cookiesTest.download("http://test1.ru/test/cookie.php");
cookiesTest.download("http://test1.ru/test/cookie.php");
return app.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Output:
"NUM: []"
Finish!
getAllCookies: (QNetworkCookie("Mortal=1; expires=Wed, 18-Jul-2029 05:49:51 GMT; domain=test1.ru; path=/test/") )
"NUM: [1]"
Finish!
getAllCookies: (QNetworkCookie("Mortal=2; expires=Wed, 18-Jul-2029 05:49:51 GMT; domain=test1.ru; path=/test/") )
"NUM: [2]"
Finish!
getAllCookies: (QNetworkCookie("Mortal=3; expires=Wed, 18-Jul-2029 05:49:51 GMT; domain=test1.ru; path=/test/") )
Bookmarks