Seite 1 von 1

http->readAll() kommt nicht an

Verfasst: 13. September 2008 13:54
von bueffel2
Hi,

ich habe ein sehr seltsames Problem.
Vielleicht kann mir ja jemand hier weiterhelfen.

Ich habe eine Wrapper Klasse geschrieben die auf QHttp zugreift.
Nennen wir diese Klasse einfach mal HTTPWrapper.
Ich erzeuge aus meiner Basisklasse die von QMainWindow ableitet ein Objekt
auf HTTPWrapper.
In HTTPWrapper habe ich einen Slot httpRequestFinished wodrin ich folgendes mache:

Code: Alles auswählen

this->httpResponseContent = http->readAll();
Wobei httpResponseContent ein QString ist in public.

So nun mein Problem:
Wenn ich aus meiner Basisklasse auf HTTPWrapper->httpResponseContent zugreifen will ist dieser String IMMER leer.
In der HTTPWrapper Klasse hingegen ist der String bzw. das QByteArray allerdings befüllt. Es kommt nur einfach nicht in meiner Basisklasse an.

Was läuft hier falsch? Bin ratlos und hoffe hier weiß jemand weiter!

Verfasst: 13. September 2008 16:48
von bueffel2
Bin immer noch am rumtesten und immer ratloser. :?

Verfasst: 13. September 2008 17:03
von Christian81
Mehr Code - ggf. ne lokale Variable?

Verfasst: 13. September 2008 18:09
von bueffel2
erstmal herzlichen Dank für deine Antwort!

Verfasst: 13. September 2008 18:21
von Christian81
Dann fragst Du sie wohl eher ab - d.h. bevor httpRequestFinished() aufgerufen wird.

Verfasst: 13. September 2008 18:26
von bueffel2
:!:

Verfasst: 13. September 2008 18:44
von bueffel2
Ok, komischerweise klappt das nur in 20% aller Fälle.
Gibt es eine bessere Lösung, Chris?

Verfasst: 13. September 2008 18:50
von Christian81
http->getRequest() ist eine asynchrone Funktion - das kann so nicht funktionieren.

Verfasst: 13. September 2008 18:53
von bueffel2
....

Verfasst: 13. September 2008 18:55
von Christian81
bueffel2 hat geschrieben:Wenn ich dazwischen mit qWait warte geht es.
Wenn Dein hhtp-Request in 250ms abgearbeitet ist, ja - sonst nicht.
hast du eine bessere Idee?
Beschäftige Dich mit Signals und Slots. Außerdem gibt es ein HTTP-Example

Verfasst: 13. September 2008 19:02
von bueffel2
.......

Verfasst: 13. September 2008 19:06
von Christian81
Das http-Example macht genau das was Du willst - es schickt einen Request ab, fängt ein Signal (z.B. QHttp::done() ) ab und stellt den Content dar.

Verfasst: 13. September 2008 19:08
von bueffel2
........

Verfasst: 13. September 2008 19:13
von Christian81
Ich gebs auf... :roll: