URLLoader が AsyncToken を返すようにするにはどうすればよいですか?
-
21-09-2019 - |
質問
Flex アプリケーションのバイナリ データを HTTP 経由で取得しようとしましたが、いくつかの障害に遭遇しました。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());
}
これは問題に対処する正しい方法ですか?既存のソリューションはありますか?フィードバックをお待ちしております。
ありがとう、
カルティク
解決
使用後、resultFormat = text
上HTTPService
とByteArray
結果からwriteUTFBytes
にテキストを書き込むために新しいHTTPService
とコールByteArray
を作成します。そして、あなたがByteArray
またはコールSWFLoader.source
にそのLoader.loadBytes
を設定することができる必要があります。
他のヒント
AIR 1.5 アプリで James のソリューションを試しましたが、SWFLoader.source で ByteArray を設定すると次のエラーが発生します。何か案は?AIR が HTTP ヘッダーを変更するとどこかで読んだ気がしますが、これが原因なのでしょうか?ありがとうベン。
[デバッグ] mx.messaging.Channel 'direct_http_channel' チャネルがメッセージを送信しています:(mx.messaging.messages :: httprequestmessage)#0 body =(object)#1 clientid =(null)contentType = "application/x-www-form-urlencoded" destination = "defaulthtp" headers =(object)#2 httpheadersers =(object)3 messageId = "3044E76C-CF0E-2D5F-96BE-74CFF62098B0"メソッド= "get" recordheaders = falseタイムスタンプ= 0 Timetolive = 0 url = "http://www.myurl.com/test.jpg「[情報] Mx.Messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72'接続。[情報] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' プロデューサーは '3044E76C-CF0E-2D5F-96BE-74CFF62098B0' を確認しました。情報] mx.rpc.http.httpservice httpservice応答のデコード[debug] mx.rpc.http.httpservice処理httpservice応答メッセージ:(mx.messaging.messages :: commentgemessage)#0 body = "未処理の IOErrorEvent:。text=エラー #2124:ロードされたファイルは不明なタイプです。