Como hacer URLLoader devuelve un AsyncToken?
-
21-09-2019 - |
Pregunta
Yo estaba tratando de recuperar los datos binarios a través de HTTP para mi aplicación Flex, y estaba corriendo en algunos escollos. no parecía HTTPService tratar con datos binarios así, la gente que asegura haber utilizado URLLoader. Pero URLLoader no tiene la interfaz agradable AsyncToken / IResponder que proporciona HTTPService.
Así pues, hice un poco de búsqueda y no podía encontrar a nadie que se extiende URLLoader para proporcionar este tipo de funcionalidad. Seguí adelante y tomó una puñalada en ella a mí mismo: http://pastebin.com/d7369d0e0
Básicamente se ajusta un URLLoader y un AsyncToken, y mapas de los COMPLETAS, eventos IO_ERROR y SECURITY_ERROR de URLLoader para resultados / fallos que consiguen elevadas en el AsyncToken.
El uso básico:
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());
}
¿Es esta la manera correcta de abordar el problema? ¿Hay soluciones existentes? Me encantaría escuchar comentarios.
Gracias,
Karthik
Solución
Utilice la resultFormat = text
en el HTTPService
y luego crear una nueva ByteArray
y llame writeUTFBytes
para escribir el texto del resultado HTTPService
a la ByteArray
. Entonces usted debe ser capaz de establecer que ByteArray
a un SWFLoader.source
o llame al Loader.loadBytes
.
Otros consejos
He intentado la solución de James con un AIR 1.5 aplicación, pero me sale el siguiente error al configurar el ByteArray en mi SWFLoader.source. ¿Algunas ideas? Pensé que leí en alguna parte que el aire cambia las cabeceras HTTP y esto puede ser la causa? Gracias Ben.
[DEBUG] mx.messaging.Channel canal 'direct_http_channel' enviar el mensaje: (Mx.messaging.messages :: HTTPRequestMessage) # 0 cuerpo = (Object) # 1 clientId = (null) contentType = "application / x-www-form-urlencoded" destino = "DefaultHTTP" cabeceras = (Object) # 2 httpHeaders = (Object) # 3 messageId = "3044E76C-CF0E-2D5F-96BE-74CFF62098B0" method = "GET" recordHeaders = false marca de tiempo = 0 timeToLive = 0 url = " http://www.myurl.com/test.jpg " productor [INFO] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' conectado. [INFO] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' acuse de '3044E76C-CF0E-2D5F-96BE-74CFF62098B0' productor. [INFO] mx.rpc.http.HTTPService Decoding HTTPService respuesta mensaje de respuesta de [DEBUG] mx.rpc.http.HTTPService Procesamiento HTTPService: (mx.messaging.messages :: AcknowledgeMessage) # 0 cuerpo = "Yoya Error # 2044: no controlada IOErrorEvent :. text = Error # 2124:. archivo cargado es un tipo desconocido