目的

エミュレーター/シミュレーターやAndroid端末からローカルPC上のサーバを参照する場合は、少しコツがいる感じがします。
http://localhost/や、http://127.0.0.1/だと繋がりません。
その対応メモ

環境

  • Android Studio 4.0.1
  • Mac PC

参照サイト

Android Studio Android Emulator のネットワークを設定する
Android Studio ネットワーク セキュリティ構成

対応メモ

http通信の許可

まず、http接続となると思うので、http通信できるように設定する必要があると思います。

res/xml/配下にnetwork_security_config.xmlというファイルを作成。
xmlフォルダから無いので作成した。
network_security_config.xmlの内容は以下。

network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">10.1.1.1:8080</domain>
    </domain-config>
</network-security-config>

次にAndroidManifestファイルより、上記作成ファイルを参照するようにする。

AndroidManifest
<manifest
    ...
    <application 
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...

エミュレーターからの通信

エミュレーターからローカルサーバに通信する場合、上記で述べたとおり、localhostなどでは通信できなくなっている。
代わりに以下

ローカルサーバのIPアドレス
10.0.2.2

を利用する。

公式サイトより
開発マシンのアドレス 127.0.0.1 は、エミュレータ固有のループバック インターフェースと一致することになります。
とのこと。

端末からの通信

次にAndroid端末からだけど、こちらは10.0.2.2とかではない。
127.0.0.1とかでもないですよ。
PCそのものに設定されているIPアドレスを設定してください。
PCに割り振られているIPアドレスはMacの場合、ifconfigで確認。

実はちょっと引っかかった。。。