无法从 android 模拟器连接本地主机

时间:2021-02-03 07:21:03

标签: java android asp.net-mvc android-emulator

我从 .net 创建了 rest api。我有简单的登录和注册 android 应用程序。这是我绑定本地ip的代码

public class RetrofitClient {
    private static Retrofit instance;
    public static Retrofit getInstance() {
        if (instance == null)
            instance = new Retrofit.Builder()
                    .baseUrl("http://localhost:5000/")
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .build();
        return instance;
    }
}

当我运行应用程序并测试我的登录功能时,它返回

<块引用>

无法连接到 localhost/127.0.0.1:5000

我该如何解决这个问题

emulator display

emulator setting

2 个答案:

答案 0 :(得分:0)

您需要创建一个 xml 并在该 xml 文件中写入以下代码

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">your sub domain</domain>
</domain-config>
</network-security-config>

文件的位置应该是

** main/res/xml/network_security_config.xml**

并将此文件添加到应用程序标签的清单中,如下所述:

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

说明:

由于 localhost 不是安全域,您必须在默认情况下阻止非 TLS 连接的 API 28+ 的网络配置中允许非安全域。

答案 1 :(得分:0)

在我的例子中,在本地主机上运行的服务器意味着 127.0.0.1:5000。我已将其更改为我的本地 IP 地址 192.168.x.x:5000 以运行服务器。然后它起作用了。希望这会有所帮助。