QNetworkAccessManager zwraca pusty string

QNetworkAccessManager zwraca pusty string
PoziomeQ
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 8 lat
  • Postów:133
1

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

Kopiuj

    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 ;)

edytowany 1x, ostatnio: PoziomeQ
HO
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 lat
  • Postów:283
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.

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

Jeśli uważasz mój post za wartościowy - daj punkt.
Mój post pomógł Ci rozwiązać problem - zaznacz go. Pozdrawiam
edytowany 1x, ostatnio: Hostel
PoziomeQ
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 8 lat
  • Postów:133
1

dałem sobie radę w inny sposób

Kopiuj
  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 :)

edytowany 1x, ostatnio: PoziomeQ

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.