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 件のコメント:
コメントを投稿