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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ассинхронный QNetworkAccessManager + Cookie  (Прочитано 2341 раз)
rudireg
Гость
« : Октябрь 30, 2016, 15:45 »

Привет.
Стоит задача написать клиент для работы в Инстаграм.
Имеет например 100 аккаунтов, и с каждого требуется авторизоваться.

Для реализации задачи, была выбрана асинхронная работа с одним объектом  QNetworkAccessManager
Работа которого помещена в отдельный поток принимающий сигналы на выполнение сетевых запросов.
Так же для работы с cookies потребуется QNetworkCookieJar.

в итоге имеем упрощенный код:
Код
C++ (Qt)
//Constructor
MyClass::MyClass(QObject *parent) : QObject(parent)
{
   this->QNAM = new QNetworkAccessManager(this);
   QObject::connect(this->m_manager, SIGNAL(finished(QNetworkReply*)),
                    this, SLOT(replyFinished(QNetworkReply*)));
}
//----------------------------------------------------
//Public Slot
void MyClass::get(QString url, QNetworkCookieJar *cookies)
{
   //Init Cookie
   this->QNAM->setCookieJar(cookies);
 
   QNetworkRequest request(QUrl(url));
   this->QNAM->get(request);
}
//----------------------------------------------------
//Private Slot
void MyClass::replyFinished(QNetworkReply* reply)
{
   QByteArray answer = reply->readAll();
}

Всё бы ничего, но в работе с cookie  возникли проблемы.
При авторизации на сайте, каждому аккаунту назначаются индивидуальные cookie.
Если объект QNAM получит в очередь на выполнение сетевые запросы, которые относятся к разным аккаунтам
например авторизоваться на сайте от имени 10 анкет....
то возникнет мешанина с cookie, так как объект QNAM - один, а куков много.

Низнаю как решить эту проблему...
либо каждый раз создавать новый объект  QNAM  (что не очень хочется делать)
Либо забыть про QNetworkCookieJar, и в ручную помещать куки в QNetworkRequest , а после получения ответа сервера - вручную считывать куки.

Как бы вы организовали работу  c одним объектом QNetworkAccessManager  в асинхронном режиме с поддержкой разных cookie ?
« Последнее редактирование: Октябрь 30, 2016, 15:51 от rudireg » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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