Androidでサーバーと通信するアプリを作ることはよくあると思います。
そのような場合、開発段階ではサーバー側のシステムもローカルPC上に作り、エミュレーターからそこへHTTP接続するというような、1台のPCの中でAndroidアプリもサーバー側も動作を確認したいケースは多いと思います。
そんな時、サーバーへ接続する為のアドレスはどのようになるのでしょうか?
http://localhost/ではうまくいかない
このようなケースでまず思い付くのは http://localhost/ を使うという事だと思いますが、これでは狙い通りに動きません。ホスト名ではなくIPアドレスで http://127.0.0.1/ としても結果は変わりません。
http://10.0.2.2/を使おう
Android Studioのユーザーガイドによると、エミュレーターのネットワークアドレスは以下のように定義されています。
参考:https://developer.android.com/studio/run/emulator-networking.html
Network Address | Description |
10.0.2.1 | Router/gateway address |
10.0.2.2 |
Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine) |
10.0.2.3 |
First DNS server |
10.0.2.4 10.0.2.5 10.0.2.6 |
Optional second, third and fourth DNS server (if any) |
10.0.2.15 |
The emulated device network/ethernet interface |
127.0.0.1 |
The emulated device loopback interface |
これを見ると 127.0.0.1(localhost) はエミュレーター自身を指していて、通常127.0.0.1で使うような開発マシンは「10.0.2.2」ですよと書かれています。
というわけで、自身のPCへ接続したい場合は http://10.0.2.2/ を使ってアクセスしましょう。
コメントをお書きください
ありい (月曜日, 08 6月 2020 08:40)
ここに気付かずドハマりしていたので助かりました!!
大変参考になる記事を、ありがとうございました(^^)