XML Rückgabe mit httpService [Flash 10]
| 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:33 | Re1 | 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:40 | Re2 | 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, 16:39 | Re4 | 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:
| Geändert von Mediadesigner am 29.08.10 um 16:47 Uhr
| |
|
| 29.08.2010, 16:44 | Re5 | 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 Mitgliedern | 
|
| 29.08.2010, 16:57 | Re6 | 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:
EDIT:
So ich bin einen guten Schritt weiter gekommen:
Wenn ich in der Zeile
ActionScript:| 1 | trace(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:| 1 | currentChannel.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:| 1 | myXMLRequest.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:28 | Re7 | 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:| 1 | myXMLRequest.resultFormat = "xml";
|
Flex Freelancer || Flashhilfe @ Twitter || XING Profil | |
| 29.08.2010, 19:36 | Re8 | 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 | 22.07.2009 - Kuestenkind75 30.09.2009 - michi82 13.07.2011 - babbsi 22.02.2010 - f_mal |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
31.01.12, 12:30#Jobs Wir suchen (freiberufliche) Flash Developer (m/w) in Köln/Aachen http://t.co/4WPsXPOA 20.01.12, 21:02#Jobs Flash-Projekt Produktkonfigurator http://t.co/qPlGSiPd 12.01.12, 18:50#Jobs Flash Freelancer für ca. 2 Wochen in München gesucht http://t.co/XpMJr5dv 10.01.12, 10:45#PureMVC vs #RobotLegs Performance Battle. PureMVC is significantly faster than RobotLegs in nearly every respect. http://t.co/324gWRAr 06.01.12, 21:37#Jobs Flash Developer in Hamburg gesucht http://t.co/hZgTZvHJ
Regeln & Bedingungen
|