我在 localhost 中创建了一个php脚本,我将其与httpClient
连接起来,但我遇到了问题。
请告诉我如何从模拟器连接到 localhost 的php文件?
答案 0 :(得分:237)
10.0.2.2
访问您的实际计算机。如您所知,当您使用模拟器时,localhost
(127.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
答案 5 :(得分:1)
您应该使用以下命令更改adb端口:
adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881
答案 6 :(得分:0)
这终于对我有用。
配置您的Android仿真器的代理以将您的IP地址用作主机名,并将后端在其上运行的端口用作端口(在我的情况下:192.168.1.86:8080
让您的Android应用将请求发送到相同的URL(192.168.1.86:8080)(将请求发送到localhost,而http://10.0.2.2对我不起作用)