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にアクセスしたところ、
ページが表示されませんでした。(firefoxIEで確認)

作品はウェブブラウザでの閲覧が可能である必要がありますので、
作品のURLや、データのアップロード状況について
今一度ご確認頂ければ幸いです。


URL間違ってた・・・


でも正しいURLを送ったところで
前述の通りブラウザでの閲覧はできない。


やっぱ直すしかないのかぁ・・・




ということで、今から朝まで、
出来る限りのことをやります。



(AM4:44追記)直りました!

2バイト文字をUTF-8エンコードする際に、
ActionScript3.0のflash.utils.escapeMultiByte()
を用いているのですが、
ここに突っ込むクエリ文字列を短くすると直りました。


ただ、なぜこうすると動作するようになったのか、
原因の本質的なところがわかりません。


ローカルswfからYahoo APIへアクセスする際には問題なかったので、
Yahoo側の制限ではないと思います。


同様にswf@ローカル → PHP@サーバー → YahooAPIでも動いていたので、
PHPの制限でもないはず。


swf@サーバー → PHP@サーバーの通信において、
何か文字数制限みたいなものがあるんでしょうか・・・?