Adobe Flex 3 と Python 2.5 で開発された Web アプリケーションがあります (Google App Engine にデプロイされています)。RESTful Web サービスは Python で作成されており、その結果は現在、HttpService オブジェクトを使用して Flex によって読み取られる XML 形式になっています。
ここでの主な目的は、XML を圧縮して、HttpService の send() メソッドと結果イベントの間の時間をできるだけ短くすることです。Python のドキュメントを調べたところ、zlib.compress() を使用して XML の結果を圧縮することができました。
次に、HttpService の結果の型を "xml" から "text" に設定し、ByteArrays を使用して文字列を圧縮解除して XML に戻してみました。ここで私は失敗しました。私はこのようなことをしています:
var byteArray:ByteArray = new ByteArray();
byteArray.writeUTF( event.result.toString() );
byteArray.uncompress();
var xmlResult:XML = byteArray.readUTF();
byteArray.uncompress() で例外をスローし、byteArray を圧縮解除できないと言います。また、byteArray の長さをトレースすると、0 になります。
私が間違っていることを理解できません。すべての助けに感謝します。
- 編集 -
コード:
# compressing the xml result in Python
print zlib.compress(xmlResult)
# decompresisng it in AS3
var byteArray:ByteArray = new ByteArray();
byteArray.writeUTF( event.result.toString() );
byteArray.uncompress()
イベントのタイプは ResultEvent です。
エラー:
エラー: エラー #2058: データの解凍中にエラーが発生しました。
このエラーは、byteArray.bytesAvailable = 0 の値が原因である可能性があります。これは、Python が生成した生のバイトが byteArray に正しく書き込まれていないことを意味します。
-- スリ