酒日記

2002 12 04

Wed, 04 Dec 2002

一番絞り 毬花 (5.5% × 1000 ml)

仕事。Flash とサーバサイドスクリプトの連携ってやつ。

データのやりとりは XML-RPC でやってみることにして、 sourceforge.net にあった XML-RPC Flash Client Library を使って実験。サーバ側は Perl で、XMLRPC::Lite (SOAP::Lite に同梱) を使う。

Flash から RPC を Call すると、送られている XML 自体は問題なさそうなのにサーバがエラーを返す。 エラーメッセージによると、HTTP ヘッダの Content-Type が application/x-www.form-urlencoded になっているのがいけないようで。 text/xml でなくては XMLRPC::Lite が受け取ってくれない。

Content-Type を指定するために、

this.methodCall.contentType = "text/xml";

と .as ファイルに追加してみるが、なぜか指定が効かず。常に application/x-www.form-urlencoded で送信されてしまう。なぜだ。

検索した結果、Flash XML FAQ の日本語訳に、

バージョン5,0,42,0のプレーヤーでは(Webブラウザを通した場合のみ)、contentTypeという新しいXMLメンバがあり、content typeを"text/xml"にセットできる。

という記述が。実験はプレビューから行っていたのだが、試しに swf に書き出してブラウザ経由で実行すると ・・・通った。MX になってもこのバグ (なのか?) があるのね。つかえねー。

しかしいちいち swf に書き出さねば実験できないのはいかにも不便。 サーバ側の CGI のほうで、

BEGIN {
    $ENV{CONTENT_TYPE} = 'text/xml';
};

と、強制的に Content-Type を上書きしてやって誤魔化すという手もあるが、これも美しくないなあ。


powered by blosxom