0

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

これは問題にアプローチする正しい方法ですか?既存のソリューションはありますか? フィードバックをお待ちしております。

ありがとう、

カーシック

4

2 に答える 2

1

でを使用しresultFormat = textHTTPService新しいByteArrayand 呼び出しを作成して、結果writeUTFBytesのテキストを に書き込みます。次に、それを aまたは callに設定できるはずです。HTTPServiceByteArrayByteArraySWFLoader.sourceLoader.loadBytes

于 2009-12-30T16:04:01.727 に答える
0

AIR 1.5 アプリでソリューション James を試しましたが、SWFLoader.source で ByteArray を設定すると次のエラーが発生します。何か案は?AIR が HTTP ヘッダーを変更することをどこかで読んだと思ったのですが、これが原因でしょうか? ありがとうベン。

[DEBUG] mx.messaging.Channel 'direct_http_channel' channel send message: (mx.messaging.messages::HTTPRequestMessage)#0 body = (Object)#1 clientId = (null) contentType = "application/x-www-form- urlencoded" destination = "DefaultHTTP" headers = (Object)#2 httpHeaders = (Object)#3 messageId = "3044E76C-CF0E-2D5F-96BE-74CFF62098B0" method = "GET" recordHeaders = false タイムスタンプ = 0 timeToLive = 0 url = " http://www.myurl.com/test.jpg" [INFO] mx.messaging.Producer '4FA2CCF4-2B3E-4EAB-2873-74CFF612AA72' プロデューサーが接続されました。 2D5F-96BE-74CFF62098B0'. [INFO] mx.rpc.http.HTTPService HTTPService 応答のデコード [DEBUG] mx.rpc.http.HTTPService Processing HTTPService 応答メッセージ: (mx.messaging.messages::AcknowledgeMes​​sage)#0 body = "エラー #2044: 未処理の IOErrorEvent:。text=エラー #2124: ロードされたファイルは不明なタイプです。

于 2010-01-28T12:07:38.637 に答える