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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top