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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: qnetworkaccessmanager нет ответа  (Прочитано 2592 раз)
shender
Гость
« : Август 19, 2011, 14:12 »

День добрый такая проблема юзаю qnetworkaccessmanager
делаю простой post/get request ( не важно ) бывают моменты что просто наглухо не приходит не каких признаков жизни,
wireshark показывает что запрос прошел и на него получен ответ, кто то с таким сталкивался? Windows XP, Qt 4.7.3
Записан
SimpleSunny
Гость
« Ответ #1 : Август 19, 2011, 17:28 »

Покажите код.
Записан
shender
Гость
« Ответ #2 : Август 19, 2011, 17:42 »

в конструкторе так:
Код
C++ (Qt)
m_manager_downloader = new QNetworkAccessManager(this);
connect(m_manager_downloader,SIGNAL(finished(QNetworkReply*)), this,SLOT(onDownloadFinished(QNetworkReply*)));
 

далее вызов метода Download ( const QUrl &url ):
Код
C++ (Qt)
void HTTPDownloader::Download( const QUrl & url ){
m_reply = m_manager_downloader->post(m_request,m_PostData);
Q_ASSERT(m_reply);
connect( m_reply,   SIGNAL( downloadProgress ( qint64, qint64) ),
                this,      SIGNAL( downloadProgress ( qint64, qint64) ) );
}
 

слот:
Код
C++ (Qt)
void HTTPDownloader::onDownloadFinished(QNetworkReply *reply)
{
   int code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
   QString reason = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
   Log ( LOG_DEBUG, tr("Request [%1] finished").arg( reply->request().url().toString( ) ) );
   if ( reply->error() != 0 )
   {
       Log(LOG_ERROR,tr("Requset: %1, QT error info:[%2- %3")
           .arg(reply->url().toString()).arg(reply->error()).arg(reply->errorString()) );
       Log(LOG_ERROR,tr("HTTP: [%1 - %2]").arg(code).arg(reason));
       emit downloadError(code,reason);
       deleteObjects();
       return;
   }
    QByteArray data(reply->readAll());
   emit downloadCompleted(data);
 

коннект проходи, если вы к этому клоните, повторяется не всегда, периодичности замечено не было, на сервере логируется что зпрос получен и что на него отвели, на тачке также wireshark ответ ловит
« Последнее редактирование: Август 19, 2011, 17:45 от shender » Записан
DmP
Гость
« Ответ #3 : Август 19, 2011, 21:48 »

Может быть просто блокируется обработчик событий, ну типа после вызова Download(), программа висит в цикле и ждет ответа?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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