2010年6月5日土曜日

AndroidのエミュレーターでASP.NET Dev Serverのlocalhostにアクセスする方法

Androidアプリをエミュレーター上で実行しWebアクセスするときに、テスト用にlocalhostを接続先に指定すると「Connection to http:localhost refused」とかなんとか言われて接続できない。

この理由はエミュレーター上でlocalhostとはエミュレーター自身を指すので、テスターが期待するようにはエミュレーターを実行しているマシンをルックアップしてくれない。なので解決方法は指定するURLを下記のようにプライベートIPアドレス(PvIP)へと変更しなければならない。

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://192.168.0.2/foo/bar"); 
HttpResponse response;
response = httpclient.execute(httpget);
// 以下略
(HttpGetのサンプルはこちらを参考にどうぞ:How-to: Android as a RESTful Client

PvIPはコマンドプロンプトなどからipconfigを実行して取得すればよい。

で、このPvIPを指定する場合にASP.NET Development Serverを指定すると動かない。デブサバとはなんぞや、というのは下図のようなASP.NET開発者にはなじみの開発環境用のお手軽自動サーバーのことだ。


仮にデブサバが起動している状態でブラウザからhttp://192.168.0.2:52267/へとアクセスしても、サイトが見つからないと拒絶されてしまう。そのため、デブサバをPvIPで使うのは早々にあきらめて、IISでWebアプリケーションを仮想ディレクトリに登録する必要がある。

「デブサバのlocalhostにアクセスする方法」とこのポストのタイトルにあるが、それは色々と試したけれど無理だったので、もう普通にIISでテストしたいアプリを仮想ディレクトリにしたほうが早い。設定した仮想ディレクトリは下図のようになる。


一番下の項目のstripmeにアクセスするにはhttp://192.168.0.2:56526/となる。これでAndroidのエミュレーターからもHttpGetが正常に期待したサイトへとリクエストされるようになる。

0 件のコメント:

コメントを投稿