Seite 1 von 1

[gelöst] Datei von Website überprüfen und herunterladen

Verfasst: 21. März 2011 14:01
von reinki0013
hallo zusammen,

bin ziemlich ratlos und auch ein bisschen verzweifelt...
ich möchte von einer website eine datei herunterladen bzw. nur öffnen würde mir auch schon genügen...danach nachsehen in der datei welche versionsnummer es ist und anschließend falls es eine neuere ist, eine andere Datei herunterladen...

ich hab mir das jetzt mal mit dem QHttp und so angesehen, da check ich mich leider überhaupt nicht durch...

hab folgendes probiert:

Code: Alles auswählen

QUrl url = "www.test.at/Version.txt"
QHttp *http = new QHttp(this);
http->setHost(url.host(), 80);
http->get(url.path());
Tja, und jetzt weiß ich auch nicht weiter...

Code: Alles auswählen

http->readAll(); ??
mit QFile?

oder wie sollte ich das jetzt am besten machen, dass ich nachsehe was in der Datei "Version.txt" drinnen steht ?

hoffe ihr könnt mir weiterhelfen!

lg

Verfasst: 21. März 2011 14:16
von RHBaum
Steht da "nicht viel" drinne kannst mit readall() alles auslesen,
nachdem von deinem QHttp das requestFinished() bekommen hasst.
Der Inhalt deiner Datei steht dann binaer in nem QByteArray.

Wie man nen QByteArray "auswertet" bzw parst das solltest aber scho wissen oder ?
Da gibts eh mehere Möglichkeiten ...

Ciao ....

Verfasst: 21. März 2011 14:28
von reinki0013
ja also es steht lediglich eine Nummer darin...

Wenn ich dich jetzt richtig verstanden habe:

im Konstruktor meiner Basisklasse:

Code: Alles auswählen

 
  QUrl url = "http://www.test.at/Version.txt";

  http = new QHttp(this);
  http->setHost(url.host(), 80);

  connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(Finished(int, bool)));
die Funktion Finished:

Code: Alles auswählen

void cSystem::Finished(int id, bool error)
{
  int i = id;
  QByteArray arr;
  arr = http->readAll();
}
??

oder habe ich das falsch verstanden?
wie bekomme ich dann die daten von meinem QByteArray?

lg

Verfasst: 21. März 2011 17:26
von upsala
Die Daten von deinem QByteArray stehen doch in der Variable arr. Wie man die Variable weitergibt ist Grundlage, und wie die ein QByteArray auswertet steht in der Doku.

Verfasst: 21. März 2011 19:33
von reinki0013
hallo,

also das heißt, dass in "arr" jetzt schon was stehen müsste??
ist die funktion also richtig?

hab es mal so versucht an die daten ran zukommen:

Code: Alles auswählen

QString test(arr);
da steht aber dann auch nichts drinnen...

Verfasst: 21. März 2011 20:29
von upsala
Die Daten können ausgelesen werden nachdem das Signal

Code: Alles auswählen

void   readyRead ( const QHttpResponseHeader & resp )
gekommen ist.
Außerdem wäre ein get-Request nicht schlecht.

Mal davon abgesehen, daß QHttp deprecated ist.

Verfasst: 22. März 2011 07:43
von reinki0013
also das hat ja schon mal super geklappt, besten Dank...

Jetzt hätte ich noch eine frage und zwar wie lade ich jetzt am besten eine ".zip"-Datei herunter?

mittels QFtp?

lg

Verfasst: 22. März 2011 07:52
von franzf
Ein .zip ist auch nur eine Datei. Das Runterladen unterscheidet sich überhaupt nicht!
Einzig die Verarbeitung ist anders, wenn du auf den Inhalt zugreifen willst.
Eine google-Suche nach "Qt4 zip" sollte genügend Infos bringen.

Verfasst: 22. März 2011 10:23
von reinki0013
also besten Dank an alle beteiligte, es funktioniert wunderbar :)