Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-10-2010, 12:15   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 15
Fehlerhafter SOAP-Request

Hallo Forum,

ich beschäftige mich aktuell mit einem Projekt, daß eine Anfrage an einen Webservice schickt und die Antwort dann verarbeiten soll. Die Operation des Webservices heißt "call".

Kurz ein Überblick über den relevanten Code:

Wenn die Anwendung fertig gelandet ist, wird folgende Methode aufgerufen:

Code:
protected function application_creationComplete(event:FlexEvent):void {
webService = new WebService();
webService.addEventListener(LoadEvent.LOAD,onWebSe rvice_load);
webService.loadWSDL("xxx?wsdl");
}
Nachdem die WSDL geladen wurde, wird dann diese Methode aufgerufen:

Code:
protected function onWebService_load(event:LoadEvent):void {
webService.call.addEventListener(ResultEvent.RESUL T, call_result);
webService.call(serviceName, parameter);
}
Nach dem Operationsaufruf kommt noch die letzte Funktion dran:

Code:
protected function call_result(event:ResultEvent): void {
trace("DESC: " + event.result);
}

So weit, so gut. Rufe ich die Anwendung auf, sehe ich immer folgendes Ergebnis: "DESC: null". Beim Debuggen sieht man, daß im Result auch wirklich nichts vorhanden ist, obwohl dort eigenlich ja das Ergebnis des Webservices sein soll. Lasse ich Wireshark laufen, sehe ich, daß ich vom Server eine Antwort auf den Werbservice erhalte und daß die Antwort genauso aussieht, wie sie aussehen soll.

Scheinbar scheint das Problem die Verarbeitung des Result-Events zu sein. Ich weiß nur leider nicht mehr weiter. Teste ich den Code mit einem Whois-Webservice, dann erhalte ich als Ergebnis "DESC: Ergebnis Whois". Mein Code müßte also richtig sein.


Ich hoffe, das ist einigermaßen verständlich erklärt und einer von Euch kann mir helfen.


Grüße,
Teutates
teutates ist offline   Mit Zitat antworten
Alt 08-10-2010, 13:22   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Versuch's mal so:
Code:
protected function application_creationComplete(event:FlexEvent):void
{
    webService = new WebService();
    webService.addEventListener(LoadEvent.LOAD, webService_loadHandler);
    webService.loadWSDL("xxx?wsdl");
}

private function webService_loadHandler(event:LoadEvent):void
{
    const webService:WebService = WebService(event.target);
    const operation:Operation = webService.getOperation("call");
    operation.addEventListener(ResultEvent.RESULT, operation_resultHandler)
    operation.send(serviceName, parameter);
}

private function operation_resultHandler(event:ResultEvent):void
{
    trace(event.result);
}
Da Function auch eine call Funktion besitzt, könnte es zu Kollisionen kommen. Bin mir da aber unsicher.

Ist es ein öffentlich Webservice?
Omega Psi ist offline   Mit Zitat antworten
Alt 08-10-2010, 13:40   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 15
Danke für Deinen Code, aber auch damit bekomme ich ein NULL beim Result.

Den Webservice findest Du hier: http://semnetz.deutsches-diabetes-mu...s/IDLOGIK?wsdl

Was mich halt an der ganzen Sache wundert: Wenn ich einen Sniffer den Netzwerkverkehr abhören lasse, bekomme ich vom Server eine Antwort auf meinen Request.

Was nebenbei: Gibt es eine Möglichkeit, daß ich mir den SOAP-Request und -Response irgendwie mittels trace() anzeigen lassen kann? Aktuell debugge ich und habe einen Haltepunkte vor dem InvokeEvent, so daß ich mir den Message-Body anschauen kann.


Edit: So, ich habe beim Code von Omega Psi statt event.result ein event.message eingetragen und schon bekomme ich eine bessere Ausgabe:


Code:
(mx.messaging.messages::AcknowledgeMessage)#0
  body = "***"
  clientId = "DirectHTTPChannel0"
  correlationId = "CBA623B8-54AC-A2C2-FA38-8BDD1C61B513"
  destination = ""
  headers = (Object)#1
    DSStatusCode = 200
  messageId = "796C2B18-FDC4-E1EA-0125-8BDD2ACE42D8"
  timestamp = 0
  timeToLive = 0
Damit es übersichtlicher wird, habe ich den Body separiert und ein paar Einträge mit Daten entfernt. Die Struktur ist auf jeden Fall identisch.

Code:
<?xml version='1.0' encoding='utf-8'?>
  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
      <ns:callResponse xmlns:ns="http://www.id-berlin.de/types">
        <ns:return>
          <RESULT>
            <RETURN_CODE Value="0" />
            <STATUS Value="0" />
            <RESULT_ITEMS>
              <RESULTITEM Name="" Value="" />
              <RESULTITEM Name="" Value="">
                <ATTRIBUTE Name=" />
              </RESULTITEM>
            </RESULT_ITEMS>
          </RESULT>
        </ns:return>
      </ns:callResponse>
    </soapenv:Body>
  </soapenv:Envelope>

Geändert von teutates (08-10-2010 um 13:51 Uhr)
teutates ist offline   Mit Zitat antworten
Alt 21-10-2010, 20:12   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 15
Ich muß den Thread mal wieder hochholen, weil ich gerade einfach nicht weiterkomme damit.

Bei eigentlich jedem Beispiel, was ich bisher im Netz und in Büchern gefunden habe, wird immer ein event.result genommen, um auf das Ergebnis des WebService zuzugreifen und damit funktioniert es auch immer.

Woran liegt es, daß mein zu nutzender Webservice das Ergebnis nicht event.result speichert, sondern in event.message?
teutates ist offline   Mit Zitat antworten
Alt 22-10-2010, 00:03   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Ich könnte mir vorstellen, dass es mit der Service Definition selbst zusammenhängt. Bin aber gerade nicht im Thema drin, sorry.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-10-2010, 13:29   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 15
Problem ist mittlerweile zum Glück gelöst. Ich mußte mittels operation.formatResult auf e4x stellen und nun bekommt die result-Variable die richtigen Werte.
teutates ist offline   Mit Zitat antworten
Alt 24-10-2010, 13:41   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Hm, ich hätte nicht gedacht, dass es ein Effekt darauf hat, ob überhaupt was ankommt.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-10-2010, 21:29   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 15
Ich eigentlich auch nicht, aber anscheinend ist es doch so. Auf jeden Fall bekomme ich sonst immer ein Null-Result, wenn ich das Format nicht auf e4x änder.
teutates ist offline   Mit Zitat antworten
Alt 24-10-2010, 21:35   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Danke auf jeden Fall, dass du die Antwort gepostet hast!
Omega Psi 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
SOAP Web service classes Results auswerten - SOAP Deserialisierung tilman78 Flash mit XML und Webservices 13 10-10-2007 08:04
Fehlerhafter (automatischer) Umbruch zellteilung Flash MX 0 29-07-2004 16:23
Fehlerhafter Script bei duplicateMovieClip... Scanis ActionScript 1 7 21-04-2003 18:32
wiedermal fehlerhafter scroller...:-(( RedSaint Flash 4 und Flash 5 1 13-02-2002 10:27
Fehlerhafter Passwordschutz sergio Flash 4 und Flash 5 3 26-11-2001 06:27


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele