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

Alles rund um die Programmierung mit Qt
Antworten
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

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

Beitrag 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
Zuletzt geändert von reinki0013 am 22. März 2011 10:23, insgesamt 1-mal geändert.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ....
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag 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...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag von reinki0013 »

also besten Dank an alle beteiligte, es funktioniert wunderbar :)
Antworten