Flashとwebサーバとのやりとりで、圧縮+暗号化を利用して欲しいという話がありました。調べてみたところ、Flash Player は標準で zlib アルゴリズムのみサポートしているとの事なので、それを利用することにします。Adobe AIR は、deflate アルゴリズム(GZIP などで用いられるらしい)も、利用することが出来るようです。
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.net.URLLoader;
- import flash.net.URLLoaderDataFormat;
- import flash.net.URLRequest;
- public class Main extends Sprite
- {
- public function Main():void
- {
- var req:URLRequest = new URLRequest("compress_sample.php");
- var loader:URLLoader = new URLLoader(req);
- // ダウンロードするデータ形式をバイナリに指定する。
- loader.dataFormat = URLLoaderDataFormat.BINARY;
- loader.addEventListener(Event.COMPLETE, function(event:Event):void
- {
- try {
- // zlib形式で圧縮されたデータを解凍する。
- loader.data.uncompress();
- } catch (e:Error) {
- trace(e.message);
- }
- var str:String = loader.data;
- trace(str);
- });
- loader.load(req);
- }
- }
- }
今回はwebサーバはPHPを利用するので、PHPでの例は以下の通り。
- $message = gzcompress('このメッセージを圧縮して返します。', 9);
- header('Content-Type: application/x-gzip');
- echo $message;
返信するデータは、JSON 形式などでも同様に扱うことができます。XML 形式でも多分一緒と思います。
0 件のコメント:
コメントを投稿