iアプリにおける通信先制限
通常のiアプリはアプリをダウンロードしたサーバとしか通信できません。
このことは概念としては知っていたのですが、仕様書をじっくり読んで厳密に仕様を調べてみました。
アプリをダウンロードしたサーバとは
iアプリはその構成上jamファイルとjarファイルから成り立ちますが、
ここでいうダウンロードしたサーバとはjarファイルをダウンロードしたサーバを指します。(jamファイルのPackageURLで指定したURL)
アクセスできる範囲は
同一のサーバであるかどうかは、URLのプロトコル、ホスト名、ポートが同一かどうかで判断しています。
(例:http://www.foo.com/download/prog/App1.jar からダウンロードした場合、http://www.foo.com/ 配下にアクセス可能です)
アプリ内でダウンロード元のURLを取得する方法はあるか
ダウンロード元のURLを取得するためのメソッドとして、
com.nttdocomo.ui.IApplication#getSourceURL()
が用意されています。
このメソッドの戻り値もjarファイルをダウンロードしたURLより作成されます。
(例:http://www.foo.com/download/prog/App1.jar からダウンロードした場合、 戻り値は、"http://www.foo.com/download/prog/" になります)
エミュレータで通信を行うアプリをテストするためには
iアプリエミュレータはこの通信制限を模擬します。
その際に用いるダウンロードしたサーバのURLはjamファイルのPackageURLで指定されたURLが絶対URLである場合これを用いますが、相対URLである場合、エミュレータでADFのURLを指定する必要があります。
ここで指定するURLは実際のADF(jamファイル)のURLではなく、実際のADFを配置する一つ上のディレクトリのURLを指定する必要があります。
(例:実際のADF(jamファイル)のURLが http://www.foo.com/download/prog/App1.jam である場合、"http://www.foo.com/download/prog/" を指定します)