如何在Android模拟器中连接本地主机?

我已经在本地主机内创建了一个php脚本,我将其与httpClient连接,但我遇到了一个问题。

请告诉我如何从模拟器连接到本地主机的php文件?

229009 次浏览

而不是localhost,而是IP。

使用10.0.2.2访问您的实际机器。

正如您所了解的,当您使用模拟器时,localhost (127.0.0.1)指的是设备自己的环回服务,而不是您所期望的机器上的环回服务。

您可以使用10.0.2.2访问您的实际计算机,它是一个别名,用于帮助开发。

默认AVD使用10.0.2.2, Genymotion使用10.0.3.2

您应该使用以下命令更改adb端口:

adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881

谢谢@ lampshade的回答。

在你的API/URL中直接使用http://10.0.2.2:[your port]/并在模拟器设置下添加代理地址10.0.2.2和端口号。欲了解更多信息,请访问:https://developer.android.com/studio/run/emulator-networking.html

enter image description here

这是最后对我有用的方法。

  • 后端在本地主机上运行:8080
  • 获取你的IP地址(ipconfig)

enter image description here

    配置你的Android模拟器的代理使用你的IP地址作为主机名,你的后端运行的端口作为端口(在我的例子中:192.168.1.86:8080 李enter image description here < / p > < / >
  • 让你的Android应用程序发送请求到相同的URL(192.168.1.86:8080)(发送请求到localhost,和http://10.0.2.2没有为我工作)

感谢本博客的作者:https://bigdata-etl.com/solved-how-to-connect-from-android-emulator-to-application-on-localhost/

在xml中定义网络安全配置

<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
</network-security-config>

并将其设置为AndroidManifest.xml

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

为我解决了问题!

请参考:https://developer.android.com/training/articles/security-config