QHttp + done [Signal] [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

QHttp + done [Signal] [gelöst]

Beitrag 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 ....
Zuletzt geändert von RHBaum am 2. Juni 2008 12:32, insgesamt 1-mal geändert.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Hast du ein Testcase generiert und könntest uns dies zeigen?
Maxima
Beiträge: 27
Registriert: 23. Mai 2008 03:45

Beitrag 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:
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

ok, erster Test ... negativ ^^

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

Ciao ...
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

ok, habs .....
Ich hab nen close() drinn, was mir sofort das done() wieder feuert .....
das close gehoert da ned rein :-(

Ciao....
Antworten