Russian Qt Forum
Ноябрь 01, 2024, 05:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [QNetworkAccessManager + QNetworkCookieJar] Не сохраняются куки  (Прочитано 3010 раз)
Trust
Гость
« : Февраль 29, 2012, 11:53 »

Приветствую всех!
Задача: загрузка разных страниц одного сайта, с возможностью использования ранее выданных куков

Простейшее приложение загружает страницу с локалхоста.

Код
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м запросе
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.307 секунд. Запросов: 20.