如何使URL Loader返回异步令牌?

时间:2009-12-24 20:28:17

标签: flex flash actionscript-3 urlloader asynctoken

我试图通过HTTP为我的Flex应用程序检索二进制数据,并且遇到了一些绊脚石。 HTTPService似乎没有很好地处理二进制数据,人们说使用URLLoader。但是URLLoader没有HTTPService提供的漂亮的AsyncToken / IResponder接口。

所以,我做了一些搜索,找不到任何人扩展URLLoader来提供这种功能。我继续前进并自己捅了一下:http://pastebin.com/d7369d0e0

基本上它包装了一个URLLoader和一个AsyncToken,并将来自URLLoader的COMPLETE,IO_ERROR和SECURITY_ERROR事件映射到在AsyncToken上引发的结果/错误。

基本用法:

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

这是解决问题的正确方法吗?有现有的解决方案吗?我很想听到反馈意见。

谢谢,

KARTHIK

2 个答案:

答案 0 :(得分:1)

使用resultFormat = text上的HTTPService,然后创建新的ByteArray并致电writeUTFBytes,将HTTPService结果中的文字写入{{ 1}}。然后,您应该可以将ByteArray设置为ByteArray或致电SWFLoader.source

答案 1 :(得分:0)

我已经尝试过使用AIR 1.5应用程序的解决方案James,但是当我在SWFLoader.source上设置ByteArray时出现以下错误。有任何想法吗?我以为我读过AIR更改HTTP标头的地方,这可能是原因?谢谢Ben。

[DEBUG] mx.messaging.Channel'direct_http_channel'频道发送讯息: (mx.messaging.messages :: HTTPRequestMessage)#0   body =(对象)#1   clientId =(null)   contentType =“application / x-www-form-urlencoded”   destination =“DefaultHTTP”   headers =(Object)#2   httpHeaders =(对象)#3   messageId =“3044E76C-CF0E-2D5F-96BE-74CFF62098B0”   method =“GET”   recordHeaders = false   timestamp = 0   timeToLive = 0   url =“http://www.myurl.com/test.jpg” [INFO] mx.messaging.Producer'4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72'生产者连接。 [INFO] mx.messaging.Producer'4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72''生产者确认'3044E76C-CF0E-2D5F-96BE-74CFF62098B0'。 [INFO] mx.rpc.http.HTTPService解码HTTPService响应 [DEBUG] mx.rpc.http.HTTPService处理HTTPService响应消息: (mx.messaging.messages :: AcknowledgeMes​​sage的)#0   body =“ÿØÿà 错误#2044:未处理的IOErrorEvent:。 text =错误#2124:加载的文件是未知类型。