QHttp datei herrunter laden

Alles rund um die Programmierung mit Qt
Antworten
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

QHttp datei herrunter laden

Beitrag von Irods »

Hi wie schon im Titel steht versuche ich gerade ein Programm
zu schreiben, das eine Datei downloadet und dazu QHttp verwenden soll.
Mein Problem ist das das irgendwie gar nicht klappt.
Es wird zwar weder während der Kompilierung noch bei der Ausführung ein Fehler angezeigt aber die Funktion funktioniert nicht.
Hier mal der code:

Code: Alles auswählen

void downloadFile()
{
	QUrl url("http://www.google.de/index.html");
	QHttp http;
	http.setHost(url.host(), 80);
	http.get(url.path());
	QString set = http.readAll();
	edit->setHtml(set);
}
edit ist ein halt ein QTextedit Feld.
Bitte um Hilfe kriege das irgendwie gar nicht auf die Reihe.

MfG Irods und schon ma thx
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

Beitrag von FaS »

Doku zu QHttp hat geschrieben:The class works asynchronously, so there are no blocking functions. If an operation cannot be executed immediately, the function will still return straight away and the operation will be scheduled for later execution. The results of scheduled operations are reported via signals. This approach depends on the event loop being in operation.
Alles klar? Außerdem empfielt die Doku QNetworkAccessManager.
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

Beitrag von Irods »

das hat mir jetzt leider noch nicht so geholfen :(
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

da steht, dass der entspr. aufruf nicht blockiert.
d.h. wenn die daten geladen sind, gibts ein signal.
vorher kannst du nichts lesen oder anzeigen ...

mfg,
julian
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

und das heißt auch das nach dem Verlassen von downloadFile() QHttp weg ist.
Des weiteren ist QHttp deprecated.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

Beitrag von Irods »

Hi hab jetzt auch mal http ausgelagert aber leider funktionert es immer noch nicht:

Code: Alles auswählen

void HpC::downloadFile()
{
	QUrl url("http://www.google.de/index.html");
	http = new QHttp;
	QFile file("raus.html");
	file.open(QIODevice::WriteOnly);

	http->setHost(url.host(), 80);
	http->get(url.path());
	http->get(url.path(), &file);

	connect( http, SIGNAL(done(bool)), this, SLOT(showFile(bool)) );

	if (http->error())
		QMessageBox::information(this, "HttpFehler", http->errorString(), QMessageBox::Ok);
}

void HpC::showFile( bool a)
{
	if(a)
	{
		QFile file2("raus.html");
		file2.open(QIODevice::ReadOnly);

		QTextStream ds(&file2);
		QString set = ds.readAll();
		file2.close();

		edit->setHtml(set);
	}
}
Jetzt gibt er wenn ich es ausführe die Meldung >Segmentation fault<
aus und schmiert ab.
Ich weiss zwar das das so viel heisst wie halt
unberechtigter/nicht möglicher Zugriff aber ich hab trotzdem noch keine Ahnung was ich machen soll.

MfG Irods
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und was denkst Du wie lange QFile lebt?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

Beitrag von Irods »

also QFile file lebt so lange bis ichs manuell loesche :D
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

Irods hat geschrieben:also QFile file lebt so lange bis ichs manuell loesche :D
beim austritt aus dem gueltigkeitsbereich (bspw. der funktion) wird die variable geloescht (file) ...

mfg,
julian
Kratzy974
Beiträge: 23
Registriert: 29. September 2009 13:25

Beitrag von Kratzy974 »

Code: Alles auswählen

void HpC::downloadFile()
{
   QUrl url("http://www.google.de/index.html");
   http = new QHttp;
   QFile file("raus.html");
QFile wird auf dem Stack in dem Scope (die {} Klammern) erstellt. Der Stack wird beim verlassen des Scopes wieder aufgeräumt, somit alle Objekte, welche auf dem Stack innerhalb des Scopes erzeugt werden wieder gelöscht.
QHttp braucht das QFile aber länger als nur in dieser Methode, da Asynchron.

QFile file ist eine Instance (Klassen !). Die Datei raus.html besteht natürlich länger, das ist für QHttp aber egal.
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

Beitrag von Irods »

mm hab das file ausgelagert funzt aber trozdem nich :(
Kratzy974
Beiträge: 23
Registriert: 29. September 2009 13:25

Beitrag von Kratzy974 »

Wird in die html Datei denn etwas hineingeschrieben ? Es kann vielleicht sein, dass die Datei noch zum Schreiben offen ist (file noch offen ?). funktioniert file2.open() oder gibt dies false zurück ?
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

wie genau ausgelagert?

mfg,
julian
Irods
Beiträge: 53
Registriert: 24. Mai 2009 20:57
Kontaktdaten:

Beitrag von Irods »

hi hab QFile für die Klasse public definiert und die datei ist nach jedem
aufruf dieser zum schreiben leer(beim lesen nicht).
Antworten