[gelöst] Qt4 Probleme mit mehreren QHtml-Verbindungen
-
Ich bin dabei mir ein kleines Proxy-Progamm mit Qt4 zu schreiben, allerdings stoße ich da auf einige Probleme
Mein Programm erstellt einen QTcpServer und hört den localhost am Port 8080 ab. Wenn jetzt z.B. der Browser eine Webseite aufruft, bekommt mein Programm die entsprechenden Headerangaben und schlüsselt diese wiederum in eine gültige QHttp-Anfrage um, die dann weitergereicht wird.
Beispiel aus der Anleitung:
QHttpRequestHeader header("GET", "/index.html"); header.setValue("Host", "www.trolltech.com"); http->setHost("www.trolltech.com"); http->request(header);
Da ich die Daten in Chunks, also Teilstücken und nicht als Ganzes, verarbeiten möchte, benutze ich zum Connecten das Signal "void readyRead ( const QHttpResponseHeader & resp )".
So springt mein Programm bei neuen Chunks direkt in den angegebenen Slot.Soweit läuft auch alles super, Problem ist das ich in der Routine (im Slot) nicht weiß wie ich ermitteln soll von welchem QHttp-Objekt die gerade eingetroffenen Daten stammen.
Hoffe, ich habe mich halbwegs verständlich ausgedrückt.
Wäre klasse wenn jemand Hilfe weiß.Gruß,
Tsunami
-
Habe die Lösung gerade selbst gefunden
Kann man ganz einfach über QHttp *Name=qobject_cast<QHttp*>(sender());
erreichen.
-
Tsunami schrieb:
Habe die Lösung gerade selbst gefunden
Kann man ganz einfach über QHttp *Name=qobject_cast<QHttp*>(sender());
erreichen.hi, bin gerade auch dran, qt4 für webanwendung zu benutzen. kannst du mir deine vollständige lösung zeigen?
Danke und viele Grüße tesu
-
tesuji schrieb:
hi, bin gerade auch dran, qt4 für webanwendung zu benutzen. kannst du mir deine vollständige lösung zeigen?
Wo genau hakt es denn?
Wenn du die Daten nicht zwingend als Chunks benötigst, dann würde ich dir den Einsatz des Signals void QHttp::requestFinished ( int id, bool error ) empfehlen. Hat den Vorteil das du alle Daten auf einmal zusammen mit der QHttp-ID des Downloads bekommst und auch gleich ob es Fehler gab.
Falls du mehrere QHttp-Objekte benutzt, dann kannst du entweder über die mitgelieferte ID das QHttp-Objekt ermitteln oder aber direkt über QHttp *Name=qobject_cast<QHttp*>(sender());
Du bekommst dann einen Pointer auf das QHttp-Objekt zurück und kannst die Daten dann über Name->readAll() auslesen.
-
hi tsunami,
in einem Projekt sollen wir programmieren, dass von der im Internetbrowser angezeigte Text und bestimmte Bilder über cut and paste an ein Programm übergeben werden. Für die grafische GUI können wir auc QT verwenden. Da ich gerade twas in QT versucht habe, möchte ich dazu also QT verwenden. Allerdings habe ich noch keine Webanwendung damit programmiert.
viele Grüsse von tesu
-
tesuji schrieb:
in einem Projekt sollen wir programmieren, dass von der im Internetbrowser angezeigte Text und bestimmte Bilder über cut and paste an ein Programm übergeben werden.
Also dafür brauchst du definitiv kein QHttp-Objekt, die Daten sind ja bereits vorhanden und müssen nicht aus dem Internet geladen werden.
Nimm einfach eine QTextEdit und subclasse das dropEvent und damit kannst du den Text dann als HTML in die Textbox einfügen lassen.