Aby połączyć się z poziomu emluatora Android do aplikacji, którą mamy uruchomioną na Twojej aktualnej maszynie, należy nadać odpowiedni adres IP, ponieważ Android wewnętrzenie rozpoznaje localhost/127.0.0.1 jako wewnętrzny adres servisu loopback.
Rozwiązanie
Zamiast adresu localhost/127.0.0.1 użyj 10.0.2.2.
Przykład
Retrofit.Builder builder = new Retrofit.Builder() .baseUrl("https://10.0.2.2:8080/") .addConverterFactory(GsonConverterFactory.create());
Zawartość pliku /src/main/res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">10.0.2.2</domain> </domain-config> </network-security-config>
Zawartość pliku AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bigdataetl.cards" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:networkSecurityConfig="@xml/network_security_config" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>