| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jul 2011
Beiträge: 34
| WebService nach FaultEvent wieder aufrufen
Hallo liebe Gemeinde, Ich habe einen wsdl Webservice, der mir meine Daten liefert. Das funktioniert soweit auch ganz prima. Nur ab und zu kommt es zu Verbindungsabbrüchen, weswegen der Service logischerweise nicht durchlädt. Nun möchte ich gerne den Aufruf einfach neu starten, das funktionert aber leider nicht. Aber der Reihe nach: den WebService habe ich "zu Fuß" implementiert, in etwa so: Code: import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.soap.WebService; var _webservice = new WebService; _webservice.wsdl = "http://ein/funktionierender/service?wsdl"; _webservice.loadWSDL(); _webservice.addEventListener(FaultEvent.FAULT, onFault); Code: _webService.meineMethode.addEventListener(ResulEvent.RESULT , onResult); _webservice.meineMethode(); Knifflig wirds, wenn onFault() aufgerufen wird: Code: function onFault(event:FaultEvent):void {
if(errorsCount < maxRetries){
errorsCount ++;
trace(this , "Loading failed", _errorsCount , "times. Retrying...");
_webservice.meineMethode();
}else{
trace("Loading data failed");
}
} _webservice.ready gibt an der Stelle "false" zurück, was den Aufruf zu verhindern scheint. Wie kann ich den WebService wieder zurücksetzen, um einen 2. Aufruf zu starten? Vielen dank schon einmal für Eure Mühen, slim.tim Geändert von slim.tim (12-10-2011 um 07:51 Uhr) |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Oct 2011
Beiträge: 5
|
hm mal ins blaue geschossen ohne es ausprobiert zu haben, ein paar Dinge die mir dazu einfallen: - den eventlistener vor dem loadWSDL() hinzufügen (immer schön der Reihenfolge nach )und dann würde ich im fault event einfach die Instanz des Webservice "neu aufsetzen" also die new WebService() usw mit URL und listenern. Ich schätz' mal das die Instanz gekillt wird, wenn ein Fehler auftritt und dann weiß Flex nix mehr damit anzufangen, wenn du versuchst den WS neu aufzurufen. |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jul 2011
Beiträge: 34
|
Hallo und vielen Dank für die Antwort. Tut mir leid, dass ich jetzt erst dazu komme, das auszuprobieren, aber ich war im Urlaub. (Muss auch mal sein...) Leider war das nicht die Lösung, aber nach einigem rumprobieren habe ich es tatsächlich hingekriegt: Tatsächlich hatte ich 2 Probleme: 1. Der Service hat nicht wirklich immer einen Fehler zurückgegeben, sondern, z.B. wenn man eine fehlerhafte id eingegeben hat, einfach "null", was ja ein gültiger Wert ist. 2. bei fehlender Konnektivität muss man das loadWSDL vor erneutem Versuchen noch einmal aufrufen (irgendwie auch logisch) habe das ganze (sinngemäss) also so geändert, und jetzt gehts: Code:
var _webservice;
function load(){
if(! _webservice) {
_webservice = new WebService;
_webservice.wsdl = "http://ein/funktionierender/service?wsdl";
_webservice.loadWSDL();
_webservice.addEventListener(FaultEvent.FAULT, onFault);
}
_webservice.meineMethode();
}
function onFault(event:FaultEvent):void {
if(errorsCount < maxRetries){
errorsCount ++;
trace(this , "Loading failed", _errorsCount , "times. Retrying...");
_webservice = null;
load();
}else{
trace("Loading data failed");
}
} |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Funktion immer wieder aufrufen | Andreaz | ActionScript 3 | 3 | 23-01-2009 10:48 |
| Funktion nach einer bestimmten Zeit immer wieder aufrufen | jun-jun | ActionScript 1 | 4 | 15-09-2008 11:23 |
| webservice mit variablen aufrufen geht ueber flash nicht... | s0h0 | ActionScript 2 | 2 | 25-12-2007 02:34 |
| function(); wieder aufrufen | stiffmeister | Flash 8 | 3 | 28-05-2007 10:09 |
| gelöschte funktion wieder aufrufen | sknoedl | Flash MX | 7 | 22-09-2006 18:40 |