締め切りギリでFlashLiteのデモ2つが完成した。
2つ目のデモは入力に対してサーバで計算して値を表示するというもので、
ラジオボタンとテキスト入力、あとサーバとの通信を実装した。
サーバとの通信は、loadVariablesという関数を使用する。通信は普通のHTTP(POSTとGET)なので、
サーブレットでgetParameter()で値を取得できるし、戻り値もkey=valueの形式に
しておけばFlashで受け取れるので、それほど難しいわけではない。
が、エミュレーターでは問題なく通信出来ていたのに、実機で試してみるとどうしても
「通信中に切断されました」というメッセージが出て通信が終わってしまう。
いろいろ試してみたが、結局ServletResponseから取得したPrintWriterのcloseメソッドを
呼ばないようにするとその現象が回避できたので、とりあえずはその実装でお茶を
濁すことにした。サーバはTomcat5.5を使っているのだが、もしかしたらそれの絡みも
あるのかもしれないので、今度時間があるときに他のサーバでも試してみようと思う。
ちなみに以下が手持ちの携帯のリクエストヘッダー。切断されてしまう現象の解明の為に
ヘッダーをログ出力したので、そこから採取。
accept-encoding:identity accept-language:ja-JP;q=1.0 user-agent:SoftBank/1.0/815SH/SHJ002 Flash/Flash-Lite/2.0 accept-charset:utf-8,euc-jp,iso-10646-ucs-2,iso-2022-jp,iso-8859-1,shift_jis,us-ascii,utf-16 Cache-Control:no-cache accept:*/* referer:http://www.example.com host:www.example.com pragma:no-cache x-jphone-uid:xxxxxxxxxxx x-s-display-info:468*540/39*22/TB x-jphone-display:480*640 x-jphone-msname:815SH x-jphone-region:44020 x-jphone-color:C262144 x-jphone-smaf:128/pcm/grf/rs Max-Forwards:10
x-jphone-uidというので、固体を特定できるようだ。あとx-jphone-regionというのは地域情報らしいが、
ネットで拾った仕様書(http://www2.developers.softbankmobile.co.jp/dp/tool_dl/download.php?docid=119)を見る限り、
44020は日本国内という意味しかないようなので、都道府県とかはわからないようだ。
面白いのはソフトバンク携帯なのにまだjphoneのヘッダーを利用している所か。
まあなんにせよ、ともかく作り終えられて終わってよかった。久々に冷や汗をかいた1週間だった。