如何在Android模拟器中连接localhost?

时间:2011-04-03 09:56:19

标签: android-emulator localhost httpconnection androidhttpclient

我在 localhost 中创建了一个php脚本,我将其与httpClient连接起来,但我遇到了问题。

请告诉我如何从模拟器连接到 localhost 的php文件?

7 个答案:

答案 0 :(得分:237)

使用10.0.2.2访问您的实际计算机。

如您所知,当您使用模拟器时,localhost127.0.0.1)指的是设备自己的环回服务,而不是您所期望的机器上的环回服务。

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

答案 1 :(得分:36)

默认AVD使用10.0.2.2,Genymotion使用10.0.3.2

答案 2 :(得分:5)

而不是给localhost提供IP。

答案 3 :(得分:5)

感谢此博客的作者: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

答案 4 :(得分:4)

谢谢@lampShaded的回答。

在您的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

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

这终于对我有用。

  • 后端在localhost:8080上运行
  • 获取IP地址(在Windows上为ipconfig)

enter image description here

  • 配置您的Android仿真器的代理以将您的IP地址用作主机名,并将后端在其上运行的端口用作端口(在我的情况下:192.168.1.86:8080 enter image description here

  • 让您的Android应用将请求发送到相同的URL(192.168.1.86:8080)(将请求发送到localhost,而http://10.0.2.2对我不起作用)