Flashhilfe.de - Flash Community

XML Rückgabe mit httpService [Flash 10]

Forum > Apache Flex / Adobe AIR > XML Rückgabe mit httpService

 


AntwortenRegistrieren Seite1

 29.08.2010, 12:57 
Beiträge: 40
Registriert: Aug 2010

XML Rückgabe mit httpService
Hallo,

ich entwickle derzeit in Air eine Benutzeroberfläche für einen TabletPC um einen Receiver fernzusteuern. Ich bin seit Tagen daran, mir mit Hilfe von httpSerive mir eine XML von ein der Box zurückgeben zu lassen aber es will einfach nicht klappen.

Wenn ich einen speziellen Befehl an diese Box z.B. via Firefox sende liefert dieser mir ein wunderschönes XML File zurück was ich dann auch so speichern kann.

Den reinen Befehl zu senden klappt ohne Probleme, nur wenn ich einen Listender dann einbaue um mir die Antwort von der Box zu holen schmeisst er mir nach einem Cast in XML im trace immer eine "null" raus. Hab schon diverse Sachen probiert jedoch kam nie ein XML File zurück was ich dann nutzen konnte.

Vielleicht könnt ihr mir ja helfen.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
        var myXMLRequest:HTTPService=new HTTPService();
         myXMLRequest.headers = {Authorization:auth};
         myXMLRequest.url="http://boxip/xml/currentservicedata";
         myXMLRequest.send();
         myXMLRequest.addEventListener(ResultEvent.RESULT, myResult)

                   var xml:XML = new XML;

      function myResult(event:ResultEvent):void {
             xml = myXMLRequest.lastResult as XML;
            trace(xml);
            currentChannel.text = xml.service.name.toSting();
        }


Das XML sieht dann so aus

ActionScript:
1
2
3
4
5
6
7
8
9
<currentservicedata>
<service>
      <name>Das Erste</name>
      <reference>1:0:1:6dca:44d:1:c00000:0:0:0:</reference>
</service>
<audio_channels></audio_channels>
<audio_track>STEREO</audio_track>
<video_channels>   </video_channels>
</currentservicedata>


Würdet mir echt helfen.

Danke schonmal
 29.08.2010, 13:33Re1
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6938
Wohnort: München
Registriert: Jan 2002

Hast Du mal einen Breakpoint in Zeile 10 gesetzt und geschaut was Dir event.result zurück gibt und von welchem Typ die Daten sind?
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 29.08.2010, 13:40Re2
Beiträge: 40
Registriert: Aug 2010

Themenautor/in

Bin da leider noch nicht so bewandert drin, da ich erst seit knapp einer Woche mit Flash und AS3 arbeite.

Wie würde ich sowas einsetzen um zu sehen was er mir zurück gibt?

Ich weiß ich bin doof...aber lernwillig...
 
nicht sichtbar bei eingeloggten Mitgliedern
 29.08.2010, 14:09Re3
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6938
Wohnort: München
Registriert: Jan 2002

Kein Problem. Jeder fängt mal an....

Ich denke mal Du arbeitest mit Flash Builder 4?

Schau Dir mal dieses Tutorial an:
Flash Builder 4 - Debuggen von Anwendungen
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
Geändert von Sebastian am 29.08.10 um 14:09 Uhr

 29.08.2010, 16:39Re4
Beiträge: 40
Registriert: Aug 2010

Themenautor/in

So ich hab mir das jetzt mal angeguckt auch wenn ich noch nicht ganz schlau werde.

Hauptsächlich gehts ja um die Variablen was die für einen Wert erhalten wenn die Antwort der Box kommt.

Also wenn ich das richtig deute...kann aber auch was ganze anderes sein:

Unter DirectHTTPMessageResponder/completeHandler, zeigt er mir bei ack (was auch immer das ist), bei body den Kopf des XML Files an.

Bei clientIdBytes ist der Wert jedoch schon "null". Heißt das er ließt den Kopf ein und sagt dann gute Nacht?

Da sind soviele Sachen angegeben, da weiß man echt nicht wo genau man gucken soll.

EDIT:

So hab jetzt, eher durch zufall den Eintrag Result gefunden und siehe da. Da sind die Inhalte meiner XML drin. Also da sind noch ein paar mehr aber ich erkenne einige Sachen wieder.
Wenn sie jetzt also im Result drin sind, warum bekomm ich sie dann nicht raus?

Angehängte Dateien:
Bild screenshot.jpg81.95 KB
Geändert von Mediadesigner am 29.08.10 um 16:47 Uhr

 29.08.2010, 16:44Re5
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6938
Wohnort: München
Registriert: Jan 2002

Du musst den Breakpoint im Result Handler setzen. Schau Dir dort mal event an. Dort gibt es event.result und da steht Dein XML drinnen.
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 29.08.2010, 16:57Re6
Beiträge: 40
Registriert: Aug 2010

Themenautor/in

Also den Eintrag hab ich unter event und dann im Unterpunkt result gefunden. Dort liegt mein XML File currentservicedata mit seinen Einträgen + noch ein paar anderen Sachen.

Wenn ich also jetzt weiß das die Einträge zurück kommen wie bekomme ich dann genau die Einträge in meine Variable XML übergeben?

Im Screenshot sieht man nochmal genau wie es aufgebaut ist:


Originalgröße anzeigen


EDIT:

So ich bin einen guten Schritt weiter gekommen:
Wenn ich in der Zeile

ActionScript:
1trace(myXMLRequest.lastResult.currentservicedata.service.name);


eingebe, so erhalte ich tatsächlich das was in diesem Feld drinsteht ausgegeben im trace.

hänge ich genau dieses Rattenschwanz an meine:
ActionScript:
1currentChannel.text = myXMLRequest.lastResult.currentservicedata.service.name.toSting();


rein, dann kommt ein riesen Fehler nachdem das Programm angefangen hat zu laufen.
Muss ich das noch irgendwie casten um es an die Instanz eines Textfeldes weiterzugeben?
currentChannel.text ist ein einfaches Textfeld.

EDIT2:

Unfassbar aber war ich habe es geschafft, nachdem ich
ActionScript:
1myXMLRequest.lastResult.currentservicedata.service.name
in ein String gecastet habe und ihn dann dem Textfile übergeben habe klappt es.

Sieht jetzt dann so aus:

ActionScript:
1
2
3
4
function myResult(event:ResultEvent):void {
          currentChannel.text = String(myXMLRequest.lastResult.currentservicedata.service.name);
     trace(myXMLRequest.lastResult.currentservicedata.service.name);
        }


Danke nochmal!!!
Geändert von Mediadesigner am 29.08.10 um 19:17 Uhr

 29.08.2010, 19:28Re7
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6938
Wohnort: München
Registriert: Jan 2002

Freut mich das es geklappt hat. Der Debugger ist sehr wichtig und Du wirst ihn später nicht mehr missen wollen ;)

Übrigens wenn Du einen resultFormat angibst kannst Du auch ein XML als Response bekommen:
ActionScript:
1myXMLRequest.resultFormat = "xml";
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 29.08.2010, 19:36Re8
Beiträge: 40
Registriert: Aug 2010

Themenautor/in

Ja könnte ich auch noch einbauen aber da ich laufend auf diesen Eintrag zurückgreifen muss würde das nur ein zusätzlicher Umweg sein. Die Parameter ändern sich ja nicht. Aber gut zu wissen wie das geht :-)

Noch eine kurze andere Frage. Ich möchte das Ganze als Funktion aufbauen und diese dann in einem Timer alle 20 Sekunden abfragen. Der Timer stellt nicht das Problem dar, nur sagt er mir jetzt das er myXMLRequest in der Funktion MyResult nicht mehr kennt und logischerweise nicht drauf zugreifen kann. Gibt es noch eine andere Möglichkeit auf dieses Event zurückzugreifen ohne die Variable mit zu übernehmen?

EDIT:

Schlicht statt myXMLRequest.lastResult.current... einfach event.result.current...

Jetzt hab ich aber wieder das Problem das der sich meine Authorization nicht mitnimmt und mich dann im Programm danach frag was natürlich dumm ist. Laut Debugger passiert das Ganze wenn er die Funktion myResult aufruft. Weiß einer wie ich dem das mitgeben kann?

EDIT:

Problem hat sich gelöst, einfach den neuen HTTPService außerhalb der Fkt. erstellen, dann kennt auch die andere Funktion seinen Wert.
Damit hat sich dann aber auch alles geklärt.
Geändert von Mediadesigner am 29.08.10 um 21:36 Uhr

 
Themen
Ähnliche Beiträge zum Thema
 
AntwortenRegistrieren Seite1

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de