QNetworkAccessManager zwraca pusty string

1

Cześć.
Próbuje pobrać kod źródłowy pewnej strony. Zostaje to jednak pobrany pusty string.


    QNetworkAccessManager * manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(fileIsReady(QNetworkReply*)) );
    manager->get(QNetworkRequest(QUrl("http://4programmers.net")));


void tv::fileIsReady(QNetworkReply *reply)
{
    QTemporaryFile temp_file;
    temp_file.write(reply->readAll());
    qDebug() << temp_file.readAll();
 }

Piszę w Qt5
dzięki za pomoc ;)

2

Powinieneś otworzyć plik zanim do niego zaczniesz pisać. Warto też po operacji zapisu wywołać flush() aby upewnić się, że wszystko zostało zapisane i że przy odczycie będzie cała zawartość odczytana z pliku.

temp_file.open();
// write
temp_file.flush();
1

dałem sobie radę w inny sposób

  QEventLoop loop;
    connect(manager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));
    QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("4programmers.net")));

    loop.exec();

    if(reply->error() == QNetworkReply::NoError)
    {
        QByteArray bytes = reply->readAll();
               QString string(bytes);
               qDebug() << string;
    }
    else
    {
        qDebug() << "reply error";
    }

troszkę łopatologicznie ale działa :)
dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1