mero
11th March 2011, 16:28
How can I read many sites ?
Now I'm using this:
QByteArray DlgMyAvatar::get_avatar(QString strUrl)
{
QEventLoop eventLoop;
QNetworkAccessManager *accessManager = new QNetworkAccessManager;
QNetworkReply *pReply = accessManager->get(QNetworkRequest(QUrl(strUrl)));
QObject::connect(pReply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec();
accessManager->deleteLater();
pReply->deleteLater();
if (pReply->error())
return QByteArray();
QByteArray bData = pReply->readAll();
if (bData.isEmpty() == false)
return bData;
return QByteArray();
}
....
for (int i = 0; i < lAvatars.count(); i++)
{
QByteArray bAvatar = get_avatar(lAvatars.at(i));
....
but sometimes it "hangup" on reading, then i've got problem :)
Of course I can convert it to something like this:
void DlgMyAvatar::get_avatar(QString strUrl)
{
pReply = accessManager->get(QNetworkRequest(QUrl(strUrl)));
QObject::connect(pReply, SIGNAL(finished()), this, SLOT(read_avatar()));
}
void DlgMyAvatar::read_avatar()
{
accessManager->deleteLater();
pReply->deleteLater();
if (pReply->error())
return QByteArray();
QByteArray bData = pReply->readAll();
// show bData ...
}
but it can only read one avatar/site ...
So how can I convert it to reading many sites in FOR loop ?
Now I'm using this:
QByteArray DlgMyAvatar::get_avatar(QString strUrl)
{
QEventLoop eventLoop;
QNetworkAccessManager *accessManager = new QNetworkAccessManager;
QNetworkReply *pReply = accessManager->get(QNetworkRequest(QUrl(strUrl)));
QObject::connect(pReply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec();
accessManager->deleteLater();
pReply->deleteLater();
if (pReply->error())
return QByteArray();
QByteArray bData = pReply->readAll();
if (bData.isEmpty() == false)
return bData;
return QByteArray();
}
....
for (int i = 0; i < lAvatars.count(); i++)
{
QByteArray bAvatar = get_avatar(lAvatars.at(i));
....
but sometimes it "hangup" on reading, then i've got problem :)
Of course I can convert it to something like this:
void DlgMyAvatar::get_avatar(QString strUrl)
{
pReply = accessManager->get(QNetworkRequest(QUrl(strUrl)));
QObject::connect(pReply, SIGNAL(finished()), this, SLOT(read_avatar()));
}
void DlgMyAvatar::read_avatar()
{
accessManager->deleteLater();
pReply->deleteLater();
if (pReply->error())
return QByteArray();
QByteArray bData = pReply->readAll();
// show bData ...
}
but it can only read one avatar/site ...
So how can I convert it to reading many sites in FOR loop ?