Russian Qt Forum

Qt => Работа с сетью => Тема начата: koldun90 от Февраль 24, 2014, 14:19



Название: QNetWorkReply ошибка сети
Отправлено: koldun90 от Февраль 24, 2014, 14:19
Добрый день проект прилагаю в файле)
В общем у меня такая проблема когда я авторизуюсь потом захожу на сервер(подключась к нему)
затем появляется список ресурсов ( папок)
И бывает так допустим я кликаю на папку  все работает открывается дочерняя ее папка и тд и тп
А бывает что допустим кликнул на папку она открылась все окей а потом еще раз кликнул то вылетает ошибка(
при чем ошибка может вылететь при открытии папок верхнего уровня так и подпапок а может и не вылететь вообще, может допустим открываешь эти папочки все окей а потом бац и ошибка "перед выполнением этого метода требуется авторизация" уже не знаю что делать)
прилагаю скрин
(http://s52.radikal.ru/i138/1402/99/2d372489401c.png) (http://www.radikal.ru)
причем в логах вывода вот пишет так:
errorReply
NetworkError -  99
errorReply
ERROR_ERROR_ERROR

Так что же может быть не так? бывает кликаешь по папке все открывается потом кликаешь секунд через 10 по ней снова и уже вылетает ошибка...
файл проекта залил...
вот ссылка  на проект http://files.mail.ru/B52E7EA8D2BF483AACAB63A40EF15AB5


Название: Re: QNetWorkReply ошибка сети
Отправлено: _OLEGator_ от Февраль 24, 2014, 15:08
Отладкой уже никто не пользуется в наше время?
Отладчик в руки, пиши лог.


Название: Re: QNetWorkReply ошибка сети
Отправлено: koldun90 от Февраль 24, 2014, 15:29
вот ошибка возникает в этой функции

bool SiuMainWindow::checkForError(QDomElement *element)
{
    int errorCode = element->firstChildElement().firstChildElement("returnCode").firstChild().nodeValue().toInt();
    if (errorCode!=0) {
        QMessageBox msgBox;
        msgBox.setWindowTitle(QString::fromLocal8Bit("ОШИБКА"));
        msgBox.setIcon(QMessageBox::Critical);
        msgBox.setText(element->firstChildElement().firstChildElement("message").firstChild().nodeValue());
        msgBox.exec();

        ui->comboBox->setEnabled(true);
        ui->tab->setEnabled(true);
        ui->tab_2->setEnabled(true);
        ui->tab_3->setEnabled(true);

        return true; // возвращает истину если ошибка
    }
        return false; // возвращает ложь если ошибки нет
}

Можно как нибудь сделать чтоб ошибка по коду 99 не обрабатывалась и окно не вызывалось?


Название: Re: QNetWorkReply ошибка сети
Отправлено: kambala от Февраль 24, 2014, 15:34
if (errorCode!=0 && errorCode != 99)


Название: Re: QNetWorkReply ошибка сети
Отправлено: BuRn от Февраль 24, 2014, 20:56
Ну если у вас в программе ошибка 99 не стопорит прогресс, т.е. с ней по прежнему все открывается, то можете сделать как советует человек выше, но это костыль. Я бы советовал посмотреть, почему она вообще возникает и обрабатывать ее соответствующим образом.


Название: Re: QNetWorkReply ошибка сети
Отправлено: koldun90 от Февраль 25, 2014, 08:57
Ну если у вас в программе ошибка 99 не стопорит прогресс, т.е. с ней по прежнему все открывается, то можете сделать как советует человек выше, но это костыль. Я бы советовал посмотреть, почему она вообще возникает и обрабатывать ее соответствующим образом.
А как понять в моей проге почему она возникает? я уже и сам не знаю почему...
кликаю на папку ошибки нет потом допустим кликаю по этой же папке секунд через 5-10 и ошибка возникает( хотя ее может опять же и не быть) можно тыкнуть хоть 100 раз по одной и той же папке ошибка не возникнет а потом и бац опять возникает...


Название: Re: QNetWorkReply ошибка сети
Отправлено: Fregloin от Март 01, 2014, 11:17
а вы уверены что в данных XML приходят все необходимые данные? вы не проверяете на наличие узлов, а пердполагаете что они есть всегда.
Код:
 int errorCode = element->firstChildElement().firstChildElement("returnCode").firstChild().nodeValue().toInt();
а что будет, если узла returnCode нет вообще, не пришел по каким либо причинам?
тут лучше проверять, а потом делать соответствующие операции...