http->readAll() kommt nicht an

Alles rund um die Programmierung mit Qt
Antworten
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

http->readAll() kommt nicht an

Beitrag 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!
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

Bin immer noch am rumtesten und immer ratloser. :?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Mehr Code - ggf. ne lokale Variable?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

erstmal herzlichen Dank für deine Antwort!
Zuletzt geändert von bueffel2 am 13. September 2008 19:10, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dann fragst Du sie wohl eher ab - d.h. bevor httpRequestFinished() aufgerufen wird.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

:!:
Zuletzt geändert von bueffel2 am 13. September 2008 19:20, insgesamt 1-mal geändert.
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

Ok, komischerweise klappt das nur in 20% aller Fälle.
Gibt es eine bessere Lösung, Chris?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

http->getRequest() ist eine asynchrone Funktion - das kann so nicht funktionieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

....
Zuletzt geändert von bueffel2 am 13. September 2008 20:14, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

.......
Zuletzt geändert von bueffel2 am 13. September 2008 20:14, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

........
Zuletzt geändert von bueffel2 am 13. September 2008 20:14, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich gebs auf... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten