Frage

Ich habe versucht, binäre Daten abzurufen über HTTP für meine Flex-Anwendung, und lief in einige Stolpersteine. HTTPService- nicht gut mit binären Daten zu beschäftigen scheint, sagten die Leute URLLoader zu verwenden. Aber URLLoader nicht den schönen AsyncToken / IResponder Schnittstelle hat, dass Httpservice bietet.

Also, ich habe einige der Suche und konnte niemanden finden URLLoader Ausweitung dieser Art von Funktionalität bereitzustellen. Ich ging weiter und nahm einen Stich an ihn selbst: http://pastebin.com/d7369d0e0

Im Grunde wickelt es einen URLLoader und eine AsyncToken und bildet die gesamte, IO_ERROR und SECURITY_ERROR Ereignisse von URLLoader zu den Ergebnissen / Störungen, die auf dem AsyncToken geraist werden.

Grund Nutzung:

var tidbitLoader:AsyncURLLoader = new AsyncURLLoader();
tidbitLoader.dataFormat = URLLoaderDataFormat.BINARY;

var asyncToken:AsyncToken = tidbitLoader.load(new URLRequest("http://localhost/SampleTidbit.swf"));

asyncToken.addResponder(this);

public function result(resultEvent:Object):void
{
    trace("result");
}

public function fault(faultEvent:Object):void 
{
    var fault:FaultEvent = faultEvent as FaultEvent;
    trace("fault: " + fault.toString());
}

Ist dies der richtige Weg, um das Problem zu nähern? Gibt es bestehende Lösungen? Ich würde gerne Feedback hören.

Danke,

Karthik

War es hilfreich?

Lösung

Mit dem resultFormat = text auf dem HTTPService und erstellen Sie eine neue ByteArray und Call writeUTFBytes den Text aus dem HTTPService Ergebnis an die ByteArray zu schreiben. Dann sollten Sie in der Lage sein, dieses ByteArray zu einem SWFLoader.source oder Anruf Loader.loadBytes einzustellen.

Andere Tipps

Ich habe Ihre Lösung James mit einem AIR 1.5 App versucht, aber ich bekomme die folgende Fehlermeldung, wenn ich die ByteArray auf meinem SWFLoader.source gesetzt. Irgendwelche Ideen? Ich dachte, ich habe irgendwo gelesen, dass AIR ändert sich die HTTP-Header und dies die Ursache sein? Dank Ben.

[DEBUG] mx.messaging.Channel 'direct_http_channel' Kanal sendet Nachricht: (Mx.messaging.messages :: HTTPRequestMessage) # 0   body = (Objekt) # 1   clientId = (null)   content = "application / x-www-form-urlencoded"   destination = "Default"   headers = (Object) # 2   httpheaders = (Objekt) # 3   messageId = "3044E76C-CF0E-2D5F-96BE-74CFF62098B0"   method = "GET"   recordHeaders = false   Zeitstempel = 0   timeToLive = 0   url = " http://www.myurl.com/test.jpg " [INFO] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' Erzeuger verbunden. [INFO] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' Hersteller anerkennen von '3044E76C-CF0E-2D5F-96BE-74CFF62098B0'. [INFO] mx.rpc.http.HTTPService Dekodierung HTTPService- Antwort [DEBUG] mx.rpc.http.HTTPService Verarbeitung HTTPService- Antwortnachricht: (Mx.messaging.messages :: AcknowledgeMessage) # 0   body = „Yoya Error # 2044: Unbehandelte IOErrorEvent :. text = Error # 2124:. Loaded-Datei ist ein unbekannter Typ

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top