Russian Qt Forum

Qt => Работа с сетью => Тема начата: yablanton от Май 25, 2010, 08:37



Название: QNetworkAccessManager и паралельные запросы
Отправлено: yablanton от Май 25, 2010, 08:37
Уважаемые коллеги, столкнулся с задачей: необходимо после процесса авторизации тянуть информацию с сайта статистики с определенным интервалом. Проблема в том, что надо отправить несколько GET-запросов серверу сразу. Но в стандартной реализации получается, что ответ приходит только на крайний. Как можно обойти эту проблему?


Название: Re: QNetworkAccessManager и паралельные запросы
Отправлено: ecspertiza от Май 25, 2010, 13:07
Ну если тебе необходимо посылать одновременно несколько запросов, то скорее всего лудше будет создавать несколько экземпляров QNetworkAccessManager, а если по очереди ,то тут все проще, получил один ответ там же послал второй запрос и так далее.


Название: Re: QNetworkAccessManager и паралельные запросы
Отправлено: yablanton от Май 28, 2010, 08:18
Но мне надо порядка 30 запросов отправлять (данных много), поэтому последовательный вариант с дожиданием реплая не подходит. Если создавать несколько менеджеров,как тогда обойти проблему с авторизацией и куками?


Название: Re: QNetworkAccessManager и паралельные запросы
Отправлено: ecspertiza от Май 28, 2010, 09:31
Ну проблем с авторизацией я не вижу, у QNetworkAccessManager есть сигнал authenticationRequired ( QNetworkReply * reply, QAuthenticator * authenticator ), вот весь массив соединяешь с одним слотом, там и проходит авторизация, ну или опять же какая авторизация нужна, с куками опять же нужно отталкиваться от конкретной задачи, создаешь QNetworkCookieJar потом всему массиву передаешь экземпляр класса, ну или на крайняк разложи их по разным потокам.


Название: Re: QNetworkAccessManager и паралельные запросы
Отправлено: SABROG от Май 30, 2010, 10:58
Но мне надо порядка 30 запросов отправлять (данных много), поэтому последовательный вариант с дожиданием реплая не подходит. Если создавать несколько менеджеров,как тогда обойти проблему с авторизацией и куками?

Один QNAM может послать любое количество запросов сразу и ждать QNetworkReply после этого от любого из них.