Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Narg от Июнь 21, 2013, 17:10



Название: Потоки и Https запросы в Qt
Отправлено: Narg от Июнь 21, 2013, 17:10
Собственно сабж :
Пишу многопоточное приложение - тестовое , суть в том , что каждый поток должен делать запросы используя SSL соединение ...Ну , я грубо говоря - просто игнорирую ошибки ;)(sslignoreerrors)

Однако , почему то выходи так , что каждый поток делат лишь по 1 успешному запросу ...Остальные - ничего не несут ...

Код :

Код:
#include "myclass.h"
#include "mythread.h"

unsigned int A = 0;

MyThread :: MyThread( QObject * parent ) : QThread( parent )
{
moveToThread(this);
m_pNAM = new QNetworkAccessManager();

#ifndef QT_NO_SSL
connect( m_pNAM, SIGNAL( sslErrors( QNetworkReply*, QList<QSslError> ) ),
this, SLOT( sslErrors( QNetworkReply*, QList<QSslError>) ) );
#endif

m_pNAM -> moveToThread(this);

m_pRequest = new QNetworkRequest();

    m_pRequest -> setRawHeader( "Accept", "text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5" );
    m_pRequest -> setRawHeader( "Accept-Encoding", "gzip, deflate" );
    m_pRequest -> setRawHeader( "UserAgent", "Mozilla/5.0 (Windows; U; ru-RU) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/3.6" );
    m_pRequest -> setRawHeader( "Host", "lq.eu.lol.riotgames.com" );

m_pRequest ->setHeader( QNetworkRequest :: ContentTypeHeader, "application/x-www-form-urlencoded" );

connect( m_pNAM, SIGNAL( finished ( QNetworkReply *)), this, SLOT( httpReadyRead(QNetworkReply * ) ) );
}

void MyThread :: httpReadyRead( QNetworkReply * m_Reply  ){
QString answer = QString :: fromUtf8( m_pReply -> readAll( ) );
qDebug() << answer;
//if( answer.size() > 108 )
// MyClass :: updateStatus( ++A );
}

void MyThread::run( ){

for( unsigned int i = 0; i < Source.size(); i++ ){
Source[i].resize( Source[i].size() - 2 );
QByteArray BA ;
BA.append( Source[i] );
m_pReply = m_pNAM -> post( QNetworkRequest(  QUrl( "https://lq.eu.lol.riotgames.com/login-queue/rest/queues/lol/authenticate" ) ), BA );
}

exec();
}

#ifndef QT_NO_SSL

void MyThread :: sslErrors( QNetworkReply*, const QList<QSslError> &errors )
{
m_pReply -> ignoreSslErrors( );
}

#endif

Ну , вот впринципе , как то так ... Беда ... Уже день мучаюсь - и никак не могу понять что к чему ... Если слать запросы на обычный http - то все выходи хорошо :)А вот так - не очень :)