Seite 1 von 1

QHttp + done [Signal] [gelöst]

Verfasst: 30. Mai 2008 17:17
von RHBaum
Ich beiss mich grad durch das Thema, und komm grad bissi ins straucheln :-(

QT Version 4.2.3

Ich will/muss mehrere dateien downloaden, quasi in ner queue ....

mit QHttp eigentlich kein problem ....
Ich brauch aber nu irgendwann die info, wann der mit dem Download fertig ist. Selber weiss ich gar ned, intern, was wieviel requests der ausfuehrt. mir auch eigentlich ned wichtig.
Wichtig ist, ich brauch ein "signal" wenn der fertig ist und nix mehr versucht.

und laut doku ist doch done(bool) genau das ...

This signal is emitted when the last pending request has finished; (it is emitted after the last request's requestFinished() signal). error is true if an error occurred during the processing; otherwise error is false.

Nun hat aber mein programm folgendes verhalten ....
ich ruf das get auf ... und wirklich nur einmal !!!
wenn der fertig ist, bekomm ich das done 2 mal geworfen

signal iss nur einmal connected !
und es wird wirklich nur an einer stelle das get und nur einmal angestossen !

ist das nun korrektes verhalten ?

das problem ist, das ich nach dem done noch bissi was mache, und dann nen signal werfe, was meinen manager dazu bringt, das object mit dem Qhttp aus der verwaltung zu nehmen und zu loeschen.
beim 1. mal funktionierts auch super, beim 2. mal klar, springt er in methoden des geloschten objekts, und ich hab null chance das irgendwie abzufangen ....
Nach dem ersten done ist er eigentlich schon fertig, und hat den kompletten output in das io device geschrieben (html fehlermeldung vom server generiert) .... keine Ahnung wieso das 2. done kommt :-(

Ciao ....

Verfasst: 30. Mai 2008 17:24
von PeterLustig
Hast du ein Testcase generiert und könntest uns dies zeigen?

Verfasst: 30. Mai 2008 17:38
von Maxima
Das habe ich so bei mir noch nicht gehabt.

Du kannst ja hilfsweise :

Code: Alles auswählen

void stateChanged ( int state ) //slot
state == QHttp::Closing
nehmen

Wenn das auch zweimal ausgelöst wird... na dann müssen wir noch mal schaun :wink:

Verfasst: 2. Juni 2008 11:28
von RHBaum
Sorry, hatte das WE weniger Zeit ....

Ich versuch was zu bauen, womit man das nachvollziehen kann ...

Source ist eine datei auf nen SVN-Http Verzeichniss, also webdav eigentlich.
Authorisation schlaegt fehl, weil keine Infos mit angegeben wurden, was auch voellig ok ist.
Ich bekomm bei done trotzdem 2 mal false zurueck ... muss mich also auch auf das responseHeaderReceived klemmen um den Http Fehlercode abzufangen .... das kommt nur einmal.

runnergeladen hat er dann ne seite, wo die Fehlermeldung ala "authorization failed" in html drinne steht (server generiert).

Vielleicht ist das ne weiterleitung ? kann es deshalb sein ?

Ciao ...

Verfasst: 2. Juni 2008 12:10
von RHBaum
ok, erster Test ... negativ ^^

minimal anwendung was nur ein Get auf nem QHttp Object ausfuehrt, arbeitet wie erwartet .....

Ciao ...

Verfasst: 2. Juni 2008 12:26
von RHBaum
ok, habs .....
Ich hab nen close() drinn, was mir sofort das done() wieder feuert .....
das close gehoert da ned rein :-(

Ciao....