QHttp Download (nicht im Hintergrund)

Alles rund um die Programmierung mit Qt
Antworten
rafael9707s
Beiträge: 22
Registriert: 15. Juni 2012 14:27
Wohnort: Berlin
Kontaktdaten:

QHttp Download (nicht im Hintergrund)

Beitrag von rafael9707s »

Ich schreibe gerade eine QCoreApplication die als Updater arbeitet.

Der Updater soll Dateien laden, aber (!nicht!) im Hintergrund, hatte schon eine eigene Klasse geschreiben hatte aber Problem mit UTF-8 und ASCII unterscheidung.

Der Wert headere wird über foreach gegeben, das geht ja auch.

Code: Alles auswählen

foreach(headere, headerl)
        {
            if (headere.left(4) == "file")
            {
                headere.remove("file <");
                headere.remove(">");
                std::cout << QString("Remove old " + headere).toStdString();
                if (flv.remove(headere))
                {
                    std::cout << " [done]\n";
                }
                else
                {
                    std::cout << " [failed]\n";
                }
                std::cout << QString("Download new " + headere).toStdString();
                QHttp http;
                QFile fld;
                fld.setFileName(fod + "/" + headere);
                fld.open(QFile::WriteOnly);
                http.setHost("derhost");
                http.get("/update/sfiles/" + headere);
                waitForFinished:
                if (http.state() != http.Unconnected)
                {
                    Xsleep::msleep(500);
                    std::cout << ".";
                    goto waitForFinished;
                }
                fld.write(http.readAll());
                fld.close();
                std::cout << " [done]\n";
            }
      }
Datei wird erstellt aber nicht beschrieben, Google und Forumsuche konnte mir nicht helfen, danke wenn jemand mir hier bei helfen könnte :D
Arbeite an einen Messagingnetzwerk Keppe Messenger
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QHttp Download (nicht im Hintergrund)

Beitrag von Christian81 »

1. Warum QHttp und icht das aktuellere QNetworkAccessManager
2. QHttp::readAll() liefert nur die Daten die aktuell vorhanden sind, das müssen nicht zwangsläufig alle sein - du wartest ja nur bis connected ist und gehst dann einfach davon aus dass damit auch alle Daten heruntergeladen sind - so ein Netz hätte ich auch gern.
3. Was genau spricht gegen die asynchron?
4. goto !? sorry aber Basic war vor 30 Jahren ... sorry aber das ist Müll
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
rafael9707s
Beiträge: 22
Registriert: 15. Juni 2012 14:27
Wohnort: Berlin
Kontaktdaten:

Re: QHttp Download (nicht im Hintergrund)

Beitrag von rafael9707s »

Das mit den Ersatz habe ich schon länger entdeckt, ich schlage gerade bei diesen Code fehl

Code: Alles auswählen

                QNetworkAccessManager http;
                QNetworkReply reply;
                QFile fld;
                fld.setFileeName(fod + "/" + headere);
                fld.open(QFile::WriteOnly);
                reply = http.get(QUrl("http://domain/update/sfiles/" + headere));
                waitForFinished:
                if (!reply.isFinished())
                {
                    Xsleep::msleep(500);
                    std::cout << ".";
                    goto waitForFinished;
                }
                fld.write(reply.readAll());
                fld.close();
                std::cout << " [done]\n";
Arbeite an einen Messagingnetzwerk Keppe Messenger
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QHttp Download (nicht im Hintergrund)

Beitrag von Christian81 »

Sorry aber beschäftige Dich bitte erst einmal mit den Grundlagen von Qt - besonders die Bedeutung der Qt Eventloop.
Sleep und Goto sind definitiv ein No-Go. Und die Synchronität ist auch total unnötig...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten