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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetWorkReply ошибка сети  (Прочитано 4740 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Февраль 24, 2014, 14:19 »

Добрый день проект прилагаю в файле)
В общем у меня такая проблема когда я авторизуюсь потом захожу на сервер(подключась к нему)
затем появляется список ресурсов ( папок)
И бывает так допустим я кликаю на папку  все работает открывается дочерняя ее папка и тд и тп
А бывает что допустим кликнул на папку она открылась все окей а потом еще раз кликнул то вылетает ошибка(
при чем ошибка может вылететь при открытии папок верхнего уровня так и подпапок а может и не вылететь вообще, может допустим открываешь эти папочки все окей а потом бац и ошибка "перед выполнением этого метода требуется авторизация" уже не знаю что делать)
прилагаю скрин

причем в логах вывода вот пишет так:
errorReply
NetworkError -  99
errorReply
ERROR_ERROR_ERROR

Так что же может быть не так? бывает кликаешь по папке все открывается потом кликаешь секунд через 10 по ней снова и уже вылетает ошибка...
файл проекта залил...
вот ссылка  на проект http://files.mail.ru/B52E7EA8D2BF483AACAB63A40EF15AB5
Записан
_OLEGator_
Гость
« Ответ #1 : Февраль 24, 2014, 15:08 »

Отладкой уже никто не пользуется в наше время?
Отладчик в руки, пиши лог.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #2 : Февраль 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 не обрабатывалась и окно не вызывалось?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Февраль 24, 2014, 15:34 »

if (errorCode!=0 && errorCode != 99)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
BuRn
Гость
« Ответ #4 : Февраль 24, 2014, 20:56 »

Ну если у вас в программе ошибка 99 не стопорит прогресс, т.е. с ней по прежнему все открывается, то можете сделать как советует человек выше, но это костыль. Я бы советовал посмотреть, почему она вообще возникает и обрабатывать ее соответствующим образом.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #5 : Февраль 25, 2014, 08:57 »

Ну если у вас в программе ошибка 99 не стопорит прогресс, т.е. с ней по прежнему все открывается, то можете сделать как советует человек выше, но это костыль. Я бы советовал посмотреть, почему она вообще возникает и обрабатывать ее соответствующим образом.
А как понять в моей проге почему она возникает? я уже и сам не знаю почему...
кликаю на папку ошибки нет потом допустим кликаю по этой же папке секунд через 5-10 и ошибка возникает( хотя ее может опять же и не быть) можно тыкнуть хоть 100 раз по одной и той же папке ошибка не возникнет а потом и бац опять возникает...
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #6 : Март 01, 2014, 11:17 »

а вы уверены что в данных XML приходят все необходимые данные? вы не проверяете на наличие узлов, а пердполагаете что они есть всегда.
Код:
 int errorCode = element->firstChildElement().firstChildElement("returnCode").firstChild().nodeValue().toInt();
а что будет, если узла returnCode нет вообще, не пришел по каким либо причинам?
тут лучше проверять, а потом делать соответствующие операции...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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