Russian Qt Forum

Qt => Работа с сетью => Тема начата: BuRn от Сентябрь 01, 2013, 18:01



Название: readAll() QNetworkReply
Отправлено: BuRn от Сентябрь 01, 2013, 18:01
Отрабатывает слот на сигнал finished от QNetworkManage. В слоте пытаюсь прочитать полученные данные, периодически получаю там "". C чем может быть связанно ?


Название: Re: readAll() QNetworkReply
Отправлено: Serr500 от Сентябрь 01, 2013, 18:42
1) Хост разорвал соединение не отправив данные.
1) Не удалось соединиться.
1) Соединение разорвано промежуточным оборудованием.


Название: Re: readAll() QNetworkReply
Отправлено: BuRn от Сентябрь 01, 2013, 18:46
1) Хост разорвал соединение не отправив данные.
1) Не удалось соединиться.
1) Соединение разорвано промежуточным оборудованием.
Это парсер, скорее всего хост разорвал соединение действительно, ибо как только парсер выполнит половину дела, банят по IP. В помощь пришла прокся, только вот как теперь эту ситуацию обходить с ""? Мб что - то посоветуете ? на данный момент стоит затык, типа если пусто, то запросить заново. Странно только то, что перед запросами на сайт, происходит такая лажа,хотя у меня все же стоит таймаут


Название: Re: readAll() QNetworkReply
Отправлено: kambala от Сентябрь 01, 2013, 23:34
попробуй читать кусками по сигналу readyRead — так хотя бы не все данные потеряешь


Название: Re: readAll() QNetworkReply
Отправлено: besheniy.profesor от Сентябрь 02, 2013, 12:53
Нужно по сигналу readyRead примерно такое:
Код:
void slot_readyRead()
{
 QNetworkReply *rep = (QNetworkReply *)sender();
bytearray<<rep->readAll();//bytearray - QByteArray

}
И только по сигналу replyFinished все даные будут в bytearray