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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] QNetworkAccessManager и QNetworkCookieJar  (Прочитано 6084 раз)
ieroglif
Гость
« : Июнь 26, 2010, 12:50 »

есть у меня несколько (два Улыбающийся ) вопросов:
1. сравнение QNetworkAccessManager и QHttp. второй меня радовал в своё время тем, что каждый ответ можно было чётко идентифицировать с запросом по id. В первом же до сих пор не могу понять как это делается. Ответ пришёл, а откуда? Есть, вроде, QNetworkRequest QNetworkReply::request(); однако у меня не получилось пока с ним работать. Попытка была простой - перез запросом я сохранял свой request в QList, а при получении ответа пытался сравнить list и reply->request() однако совпадать они не пожелали (хотя запрос всего один и никуда не денешься по идее). Так что вопрос: как чётко соотносить reply с request?
2. QNetworkCookieJar. Сохранить его никак у меня не получилось, вытащить оттуда все куки каким-нить удобным методом - тоже. А я обращаюсь к одному и тому же сайту под разными логинами, так что управление куками для меня обязательно (не надо меня обвинять в спамописательстве - спам не пишу, а чего пишу - не важно Подмигивающий ). Пока решил проблему "руками" - разбирая присланные куки и так же их сохраняя. Однако мне это как-то не нравится. Есть другие варианты?
« Последнее редактирование: Июнь 26, 2010, 15:24 от ieroglif » Записан
SABROG
Гость
« Ответ #1 : Июнь 26, 2010, 13:35 »

Я объявляю массив QHash<QNetworkReply*, MyStruct>, в MyStruct помещаю всю необходимую информацию такую как запрашиваемый (базовый) Url до редиректов и т.п., время запуска запроса, хендлер на открытый файл для записи контента, количество попыток получить желаемую страницу и тому пдобную информацию.

QNetworkCookieJar нужно наследовать, чтобы получить доступ к QList<QNetworkCookie> QNetworkCookieJar::allCookies () const   [protected], потом просто поставишь свой класс через void QNetworkAccessManager::setCookieJar ( QNetworkCookieJar * cookieJar ).
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #2 : Июнь 26, 2010, 13:38 »

Да, по второму вопросу всё просто:

.h:
Код
C++ (Qt)
#ifndef _REMADEDNETWORKCOOKIEJAR_H
#define _REMADEDNETWORKCOOKIEJAR_H
 
#include <QList>
#include <QNetworkCookie>
 
class RemadedNetworkCookieJar: public QNetworkCookieJar
{
public:
RemadedNetworkCookieJar();
virtual ~RemadedNetworkCookieJar();
QList<QNetworkCookie> getAllCookies();
void setAllSitesCookies(const QList<QNetworkCookie>& cookieList);
};
 
#endif
/* _REMADEDNETWORKCOOKIEJAR_H */
 

.cpp:
Код
C++ (Qt)
#include "RemadedNetworkCookieJar.h"
 
RemadedNetworkCookieJar::RemadedNetworkCookieJar() {}
 
QList<QNetworkCookie> RemadedNetworkCookieJar::getAllCookies()
{
return this->allCookies();
}
 
void RemadedNetworkCookieJar::setAllSitesCookies(const QList<QNetworkCookie>& cookieList)
{
this->setAllCookies(cookieList);
}
 
RemadedNetworkCookieJar::~RemadedNetworkCookieJar() { }
 

У себя в проге сохраняю кукизы в БД (sqlite) когда надо и когда надо извлекаю. Всё в отдельных потоках, работает как часы, никаких проблем.
« Последнее редактирование: Июнь 26, 2010, 16:36 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
ieroglif
Гость
« Ответ #3 : Июнь 26, 2010, 13:56 »

спасибо. таких подробных ответов даже не ожидал Улыбающийся
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #4 : Июнь 26, 2010, 17:11 »

и в то же время не совсем понятно зачем методы allCookies и setAllCookies - protected.
Хз, удобно было бы их юзать как public, чем наследовать ради них QNetworkCookieJar.
« Последнее редактирование: Июнь 26, 2010, 19:16 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
thechicho
Гость
« Ответ #5 : Сентябрь 30, 2011, 09:09 »

Цитировать
У себя в проге сохраняю кукизы в БД (sqlite) когда надо и когда надо извлекаю. Всё в отдельных потоках, работает как часы, никаких проблем.

Поделитесь кодом, плиз.
Или готов купить его, т.к. сам застрял на работе с куками (запись в файл, дальнейшее считывание и "хождение" по сайту с ними), а реализация многопоточности для меня вообще жестью будет (не было опыта работы с ней)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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