FlashPlayerのセキュリティー制限でAuthorizationのヘッダーを作成することは禁止されている。swfからBASIC認証を通過するにはいつものごとくPHPとかでproxyするしかないのかな(オーサリング環境からはBASIC認証を通過できる)。以下のコードはswfから「url」、「id」、「pass」をPOST通信でPHPに渡し、BASIC認証を通過する。認証通過後はサーバーから受け取ったデータをechoで出力させてswfに返してやる。これでswfとBASIC認証の先にあるAPIとやり取りできるようになる。
Main.as
[sourcecode language=’js’]
package
{
import flash.display.Sprite;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestMethod
import flash.net.URLVariables;
import flash.events.Event;
import flash.text.TextField;
public class Main extends Sprite
{
private var url:String = “http://***/basicproxy.php”;
private var id:String = “id”;
private var pass:String = “password”;
//——————————
// コンストラクタ
//——————————
public function Main()
{
//—–[送信するデータを格納]
var variables:URLVariables = new URLVariables();
variables.id = id;
variables.pass = pass;
//—–[リクエストの発行]
var request:URLRequest = new URLRequest();
request.url = url;
request.method = URLRequestMethod.POST;
request.data = variables;
//—–[ローダーの設定]
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(request);
}
//——————————
// 読み込み完了
//——————————
private function onComplete(e:Event):void
{
var loader:URLLoader = e.target as URLLoader;
loader.removeEventListener(Event.COMPLETE, onComplete);
trace(loader.data);
}
}
}
[/sourcecode]
curlを使うと簡単に認証を通過できる。あとは受け取ったデータを出力するだけ。