「Flashアプリでホームページメンテナンス機能」の続報(昨日の原因判明、解決策なし)
根本的な原因はわかりません。
おそらく「やわらか銀行910SH」に搭載の
Flash Playerのバグでは?
HTTPヘッダの情報を調べてみたいなと思って。
こんなソースを書いてみました。
swf側。
on(release, keyPress "<Enter>") {
System.useCodepage = true;
var send_lv = new LoadVars();
var load_lv = new LoadVars();
send_lv.text = "テスト";
load_lv.onLoad = function() {
testtext = load_lv.text;
}
send_lv.sendAndLoad("test.php",load_lv,"POST");
}
PHP側。
print_r($_SERVER);
print_r($_REQUEST);
で、だ。
PCからの実行時ログ。
Array
(
[CONTENT_LENGTH] => 32
[CONTENT_TYPE] => application/x-www-form-urlencoded
[DOCUMENT_ROOT] => /hogehoge
[HTTP_CACHE_CONTROL] => no-cache
…
)
Array
(
[text] => テスト
)
やわらか銀行910SHからの実行時ログ。
Array
(
[CONTENT_LENGTH] => 32
[CONTENT_TYPE] => application/octet-stream
[DOCUMENT_ROOT] => /hogehoge
[HTTP_ACCEPT] => */*
…
)
Array
(
)
これだ。
on(release, keyPress "<Enter>") {
System.useCodepage = true;
var send_lv = new LoadVars();
var load_lv = new LoadVars();
send_lv.text = "テスト";
load_lv.onLoad = function() {
testtext = load_lv.text;
}
send_lv.contentType('application/x-www-form-urlencoded');
send_lv.sendAndLoad("test.php",load_lv,"POST");
}
としてみて、再度実行してみたけど、
やっぱりContent-Typeはoctet-stream。
send_lv.addRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
としてみて、再度実行してみたけど、
やっぱりContent-Typeはoctet-stream。
なんで?
ってか、
なんでLoadVars.sendAndLoadのContent-Typeで
octet-streamなの?
やわらか銀行さんとこにも電話してみましたが、
回答は
「SoftBank Developer Support Siteに書いてある情報しか提示できません。」
と言われてしまった。
片っ端から調べたけど、Flashに関する情報なんて
んなことわかってるんだよ、たーこ
という程度の微々たることしか、書いてませんでした。
法人なら情報を提示してもらえるらしいけど
こっちはチンケなサイトのオーナだ。悪いか。
で、だ。
やわらか銀行さんとこの
「S!アプリ」に関する技術情報の中に
POST時のContent-Type(デフォルト値):application/octet-stream
POST時のContent-Typeの書き換えがアプリから可能であるか:○
ってかそもそもS!アプリ=Javaの話だしね。
LoadVars.contentType効かないしね。
なんだなんだ。
JavaのsetContentTypeは効くのに
FlashのLoadVars.contentTypeは効かねーってか。
これを何とか無理やり変える方法はないだろうか。。。
こうなってくると、サーバ(Apache)あたりを
いじんなきゃダメか?
受け取り側(PHP)でバイナリ(octet-stream)を
エンコード?(デコード?)できないだろうか?
おそらく「やわらか銀行910SH」に搭載の
Flash Playerのバグでは?
HTTPヘッダの情報を調べてみたいなと思って。
こんなソースを書いてみました。
swf側。
on(release, keyPress "<Enter>") {
System.useCodepage = true;
var send_lv = new LoadVars();
var load_lv = new LoadVars();
send_lv.text = "テスト";
load_lv.onLoad = function() {
testtext = load_lv.text;
}
send_lv.sendAndLoad("test.php",load_lv,"POST");
}
PHP側。
print_r($_SERVER);
print_r($_REQUEST);
で、だ。
PCからの実行時ログ。
Array
(
[CONTENT_LENGTH] => 32
[CONTENT_TYPE] => application/x-www-form-urlencoded
[DOCUMENT_ROOT] => /hogehoge
[HTTP_CACHE_CONTROL] => no-cache
…
)
Array
(
[text] => テスト
)
やわらか銀行910SHからの実行時ログ。
Array
(
[CONTENT_LENGTH] => 32
[CONTENT_TYPE] => application/octet-stream
[DOCUMENT_ROOT] => /hogehoge
[HTTP_ACCEPT] => */*
…
)
Array
(
)
これだ。
on(release, keyPress "<Enter>") {
System.useCodepage = true;
var send_lv = new LoadVars();
var load_lv = new LoadVars();
send_lv.text = "テスト";
load_lv.onLoad = function() {
testtext = load_lv.text;
}
send_lv.contentType('application/x-www-form-urlencoded');
send_lv.sendAndLoad("test.php",load_lv,"POST");
}
としてみて、再度実行してみたけど、
やっぱりContent-Typeはoctet-stream。
send_lv.addRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
としてみて、再度実行してみたけど、
やっぱりContent-Typeはoctet-stream。
なんで?
ってか、
なんでLoadVars.sendAndLoadのContent-Typeで
octet-streamなの?
やわらか銀行さんとこにも電話してみましたが、
回答は
「SoftBank Developer Support Siteに書いてある情報しか提示できません。」
と言われてしまった。
片っ端から調べたけど、Flashに関する情報なんて
んなことわかってるんだよ、たーこ
という程度の微々たることしか、書いてませんでした。
法人なら情報を提示してもらえるらしいけど
こっちはチンケなサイトのオーナだ。悪いか。
で、だ。
やわらか銀行さんとこの
「S!アプリ」に関する技術情報の中に
POST時のContent-Type(デフォルト値):application/octet-stream
POST時のContent-Typeの書き換えがアプリから可能であるか:○
ってかそもそもS!アプリ=Javaの話だしね。
LoadVars.contentType効かないしね。
なんだなんだ。
JavaのsetContentTypeは効くのに
FlashのLoadVars.contentTypeは効かねーってか。
これを何とか無理やり変える方法はないだろうか。。。
こうなってくると、サーバ(Apache)あたりを
いじんなきゃダメか?
受け取り側(PHP)でバイナリ(octet-stream)を
エンコード?(デコード?)できないだろうか?
[コメント読む(0)]