Flash からのYahoo! API 利用
先週土曜日、FlashからWeb上のXMLを取得する方法を学んだので、
ペパコン用にYahoo! APIを利用した「戻るボタン」をつくりました。
ソースはほとんど流用で済み、
とりあえず動くものはできました。
・・・が、応募用にサーバーにアップしてみると、
さっぱり動かない!
調べてみた(クスールの方に教えていただいた)ところ、
Flashを置いたドメインから別のドメインへのアクセスが、
Flash Playerにより制限されている、とのこと。
で、解決方法としては以下の2つ。
方法1:Flashのアクセス先に"crossdomain.xml"なるファイルを置く。
→これはYahooに対応してもらう必要があるので、不可。
方法2:Flashからは同一ドメインにあるPHPを参照し、
そのPHPからYahoo! APIにアクセスする。
(PHPはクロスドメイン制限がないため)
ただ、そもそもPHPがわからないので、
こちらのサイトから丸ごとコピペでやってみるも、
やっぱりアクセスできず。
締切まであと数分というところであきらめ、
「swfをダウンロードして見てください」
という注釈をつけて応募したのでした。
そして今日、ペパボの方からこんなメールが
投稿頂きました作品のURLですが、
http://〜
で間違いありませんでしょうか?わたくしの方で上記URLにアクセスしたところ、
ページが表示されませんでした。(firefox、IEで確認)作品はウェブブラウザでの閲覧が可能である必要がありますので、
作品のURLや、データのアップロード状況について
今一度ご確認頂ければ幸いです。
URL間違ってた・・・
でも正しいURLを送ったところで
前述の通りブラウザでの閲覧はできない。
やっぱ直すしかないのかぁ・・・
ということで、今から朝まで、
出来る限りのことをやります。
(AM4:44追記)直りました!
2バイト文字をUTF-8でエンコードする際に、
ActionScript3.0のflash.utils.escapeMultiByte()
を用いているのですが、
ここに突っ込むクエリ文字列を短くすると直りました。
ただ、なぜこうすると動作するようになったのか、
原因の本質的なところがわかりません。
ローカルswfからYahoo APIへアクセスする際には問題なかったので、
Yahoo側の制限ではないと思います。
同様にswf@ローカル → PHP@サーバー → YahooAPIでも動いていたので、
PHPの制限でもないはず。
swf@サーバー → PHP@サーバーの通信において、
何か文字数制限みたいなものがあるんでしょうか・・・?