Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Денис от Октябрь 13, 2013, 11:20



Название: QNetworkAccessManager не работает в release [РЕШЕНО]
Отправлено: Денис от Октябрь 13, 2013, 11:20
Обрашается к сайту в Debbug и все ок, считывает данные я их парсю, но выяснилось что почему-то нету ответа от сайта в Release версии ... то есть библиотека не совсем корректно отрабатывает .... В чем может быть причина ?


Название: Re: QNetworkAccessManager не работает в release
Отправлено: kambala от Октябрь 13, 2013, 11:41
подпишись на сигнал QNetworkReply::error(QNetworkReply::NetworkError) и посмотри что за ошибка вылазит. крайне маловероятно, что дело в библиотеке.


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 15:12
Уже сделал и вывел в QLineEdit чтоб просмотреть ошибка номер 0 - то есть нету ошибок ... В чем же тогда может быть дело ?
Как может в дебаге работать а в релизе нет ... ? Цифровая подпись ?


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 15:16
Вот пример кода:
Код:
#include "network.h"

Network::Network(QString urlString1, QString urlString2, QString urlString3){
    url1 = QUrl(urlString1);
    url2 = QUrl(urlString2);
    url3 = QUrl(urlString3);
    manager = new QNetworkAccessManager(this);

    databcoin = new QString();
    bit = new FeatBit();
    finished = false;

    bit->historylength = 0;
}

void Network::getReply1() {
    QEventLoop loop;
    finished = false;
    reply = manager->get(QNetworkRequest(url1));
    connect(reply, SIGNAL(finished()), this, SLOT(downloadFinished1()));
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();
}

void Network::downloadFinished1(){
    webContent1 = reply->readAll();
    finished = true;
}

void Network::downloadFinished2(){
    webContent2 = reply->readAll();
    finished = true;
}

void Network::downloadFinished3(){
    webContent3 = reply->readAll();
    finished = true;
}
 


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 15:19
Код:
ui->lineEdit_4->setText(QString::number(url->reply->error()));
Выводит 0 в лайнэдит ...


Название: Re: QNetworkAccessManager не работает в release
Отправлено: kambala от Октябрь 13, 2013, 15:48
подпишись на сигнал QNetworkReply::error(QNetworkReply::NetworkError) и посмотри что за ошибка вылазит.
уточню: читать ошибку надо в слоте, подключенному к указанному сигналу.

а зачем ты запихнул ивентлуп если читаешь данные в слоте, а не прямо в месте запуска запроса, я вообще понять не могу.


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 19:47
Хорошо как тогда его правильно использовать ????
Вот так :
Код:
connect(reply, SIGNAL(QNetworkReply::error(QNetworkReply::NetworkError)), this, SLOT(errorFinded()));


Название: Re: QNetworkAccessManager не работает в release
Отправлено: mutineer от Октябрь 13, 2013, 19:48
ты доку по сигналам-слотам читал?
Я там не видел записи SIGNAL(QNetworkReply::error(QNetworkReply::NetworkError))


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 20:06
Код:
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(errorFinded()));

Сорри вот таквот ????


Название: Re: QNetworkAccessManager не работает в release
Отправлено: mutineer от Октябрь 13, 2013, 20:23
Код:
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(errorFinded(QNetworkReply::NetworkError)));


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 20:32
Уже и так выводил:
Код:
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(errorFinded()));

Думал проблемы с SSL-сертификатом )))


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 20:44
так тоже делал все равно возвращает нулевую ошибку тип ее нету но массив пустой с данными ) Блин замучалсся с этим классом ...


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 20:58
а как кеш отключить ?


Название: Re: QNetworkAccessManager не работает в release
Отправлено: mutineer от Октябрь 13, 2013, 20:58
Чей кэш?


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 21:09
кэш библиотеки QNetAcsessNetwork может программа пытается с кэша грузить ???


Название: Re: QNetworkAccessManager не работает в release
Отправлено: mutineer от Октябрь 13, 2013, 21:19
Нету никакого кеша
Да и про библиотеку такую я не слышал


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 13, 2013, 21:25
Сорри вот эта QNetworkAccessManager ... ну ошибок нету... Даже лан кабель отключал, вот тогда и появляется ошибка в отладчике с помощью qDebug("Error") ... Есть еще идеи ?


Название: Re: QNetworkAccessManager не работает в release
Отправлено: Денис от Октябрь 14, 2013, 00:48
Все спасибо всем !!! Проблема снята ... Проблема была не в скачивании файла, а в парсере его ... У меня там был флаг
Код:
bool parserend;
по которому я определял что файл распарсен и я его забыл проинициализировать (((  :(
Видать компилятор в режиме дебаг все не проинициализированные переменные обнулял, или выделенное адресное пространство, а в режиме Release естественно в памяти что хранилось то и хранилось и мой обработчик считал что он уже распарсил файл )))  ;D

М-да из-за глупогшо провтыка продолбался сам и других напряг сорри и спасибо !!!   ;)