Pergunta

Eu estava tentando recuperar dados binários sobre o HTTP para o meu aplicativo Flex e estava enfrentando alguns obstáculos. HttpService não parecia lidar bem com dados binários, as pessoas disseram usar o Ullloader. Mas o UrlLoader não possui a boa interface AsyncToken/IRESPonder que o HTTPService fornece.

Então, eu fiz algumas pesquisas e não consegui encontrar ninguém estendendo o Ullloader para fornecer esse tipo de funcionalidade. Fui em frente e fiz uma facada: http://pastebin.com/d7369d0e0

Basicamente, ele envolve um urlloader e um assíncroado, e mapeia os eventos completos, io_error e security_error, do urllloader para resultados/falhas que são levantadas no Asynctoken.

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());
}

Esta é a maneira certa de abordar o problema? Existem soluções existentes? Eu adoraria ouvir feedback.

Obrigado,

Karthik

Foi útil?

Solução

Use o resultFormat = text no HTTPService e depois crie um novo ByteArray e ligue writeUTFBytes Para escrever o texto do HTTPService resultado para o ByteArray. Então você deve ser capaz de definir isso ByteArray para um SWFLoader.source ou chamar Loader.loadBytes.

Outras dicas

Eu tentei sua solução James com um aplicativo Air 1.5, mas recebo o seguinte erro ao definir o bytearray no meu SWFLoader.Source. Alguma ideia? Eu pensei ter lido em algum lugar que o ar muda os cabeçalhos HTTP e essa pode ser a causa? Obrigado Ben.

Debug] MX.Messaging.Channel 'Direct_http_channel' Mensagem de envio do canal: (mx.messaging.messages :: httprequestMessage)#0 body = (object)#1 clientela Urlencoded "Destination =" DefaUrthttp "cabeçalhos = (objeto)#2 httpheaders = (object)#3 messageId =" 3044e76c-cf0e-2d5f-96be-74cff62098b0 "Método =" get "Recordheads = Falso Timestamp = 0 Timetolive = 0 "http://www.myurl.com/test.jpg[Info] mx.messaging.producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' Produtor conectado. [Info] MX.MESSAGING.PRODUCER '4FA2CF4-2B3E-4EAB-2873-744CFF62AABROABROABLEIDO-4CFF612AABRANDO2ALEABRO-4CFF612AABRANDO2ALABROABLELABROLAPROABLEIRO-74CFF612AABROEDOLA-4CFF612AABROABOLABOLABOLABOLABOLAPERCH612ALABROABLEIRO-4AB3ELABROABLEIR 2d5f-96BE-74CFF62098B0 '. [Info] mx.rpc.http.httpService decodificando httpservice Resposta [Debug] MX.RPC.HTTP.HTTPSERVICE PROCESSING HTTPSERSG Mensagem: (MX.MESSAGING.MESSAGES.MESSAGES: Erro #2044: ioerrorevent não atendido:. Texto = Erro #2124: O arquivo carregado é um tipo desconhecido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top