Russian Qt Forum

Qt => Работа с сетью => Тема начата: shender от Август 19, 2011, 14:12



Название: qnetworkaccessmanager нет ответа
Отправлено: shender от Август 19, 2011, 14:12
День добрый такая проблема юзаю qnetworkaccessmanager
делаю простой post/get request ( не важно ) бывают моменты что просто наглухо не приходит не каких признаков жизни,
wireshark показывает что запрос прошел и на него получен ответ, кто то с таким сталкивался? Windows XP, Qt 4.7.3


Название: Re: qnetworkaccessmanager нет ответа
Отправлено: SimpleSunny от Август 19, 2011, 17:28
Покажите код.


Название: Re: qnetworkaccessmanager нет ответа
Отправлено: shender от Август 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 ответ ловит


Название: Re: qnetworkaccessmanager нет ответа
Отправлено: DmP от Август 19, 2011, 21:48
Может быть просто блокируется обработчик событий, ну типа после вызова Download(), программа висит в цикле и ждет ответа?