- 2009年12月16日 (水)
- Tweet
as3httpclientlib を使ってヘッダーをカスタマイズ
気になっていたAS3の便利ライブラリを数回にわたって紹介していこうと思います。1回目はいきなりコアなところから。
Flashとサーバーサイド(PHPとか)と通信する場合に、レアケースで役立ちそうなライブラリです。AS3にビルドインで搭載されているURLRequestはご存知の方が多いと思いますが、それとは別の方法で外部通信をできるライブラリとなります。
このライブラリの役立つところ
ビルドインのURLRequestで制御できないような通信ができるようになります。具体的にはリクエストヘッダーのカスタマイズやマルチパートのフォーム送信(画像をformのパラメーターに含めて送信すること・URLRequestでもできないことはないけど扱いやすくなるかも)ができるみたいです。
リクエストヘッダーのカスタマイズについて
AS3にリクエストヘッダーを操作できるURLRequestHeadersというプロパティーがURLRequestクラスにもあるのですが、Refererをはじめとしてほとんどのヘッダーが書き換えできないことになっています。それらは以下のリファレンスから確認することができます。
そこでas3httpclientlibを使うと、リクエストヘッダーを書き換えて通信することができます。そもそもリクエストヘッダーを書き換えるケースはほとんど無いと思いますが、レアケースとしてサーバーサイドで何かしらのリファラーチェックをして いて、それを無視したいときなどに利用できるのかと思います。本来はサーバーサイドのほうで対処すべきだと思いますが、いろんな理由(コストや政治上の理由)から Flashで対応せざるをえないときに利用できるのではないかと思いました。
一通り読み込みの機能は備わっている
また確認した限りでは仕様については次のような感じで、読み込み処理はだいたいカバーしているようです。
- テキストやバイナリデータが読み込める
- 画像はバイナリデータとして読み込んでLoader.loadBytesを使えば読み込める
- 内部的にソケット通信を使っているので、クロスドメイン対応も必要
- Adobe AIRの場合はクロスドメインは特に対処しなくてOK
使い方
使い方は次のブログ記事が参考になりましたので、お知らせしておきます。
注意点
画像を読み込む場合にonDataイベントが乱発するのですが、一回あたりのイベントでは全て画像を取得ないケースがあります。解決作としては、すべてを順にハンドリングしてByteArrayを順番に重ねていくと一つの画像ファイルのByteArrayとなります。詳しく知りたい方はProgression用のコマンドにしておきましたので、こちらのソースからご覧ください。
- HttpClientCommand (動作にはas3httpclientlib等が必要です)
投稿者 : 池田 泰延
BookMark
ブックマークはこちらからどうぞ。