Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-10-2011, 13:28   #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);
Den Aufruf starte ich in etwa so:
Code:
_webService.meineMethode.addEventListener(ResulEvent.RESULT , onResult);
_webservice.meineMethode();
Dieser Teil funktioniert (meistens)

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");
}
}
Das Problem dabei ist, daß der Service beim 2. Aufruf keinen Error mehr schmeisst.
_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)
slim.tim ist offline   Mit Zitat antworten
Alt 01-11-2011, 14:19   #2 (permalink)
Neuer User
 
Benutzerbild von Flexmatt
 
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.
Flexmatt ist offline   Mit Zitat antworten
Alt 08-11-2011, 09:09   #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");
}
}
slim.tim ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele