我在localhost中创建了一个 php 脚本,我正在连接它,httpClient
但我遇到了问题。
请告诉我如何从模拟器连接到localhost的 php 文件?
我在localhost中创建了一个 php 脚本,我正在连接它,httpClient
但我遇到了问题。
请告诉我如何从模拟器连接到localhost的 php 文件?
10.0.2.2
访问您的实际机器。正如您所了解的,当您使用模拟器时,localhost
( 127.0.0.1
) 指的是设备自己的环回服务,而不是您可能期望的机器上的环回服务。
您可以使用 10.0.2.2 访问您的实际机器,它是为帮助开发而设置的别名。
用于10.0.2.2
默认 AVD 和10.0.3.2
Genymotion
谢谢,@lampShaded 的回答。
在您的 API/URL 中直接使用http://10.0.2.2:[your port]/
并在模拟器设置下添加代理地址为 10.0.2.2 和端口号。更多内容可以访问:https ://developer.android.com/studio/run/emulator-networking.html
这最终对我有用。
配置您的 Android 模拟器的代理以使用您的 IP 地址作为主机名和您的后端正在运行的端口作为端口(在我的情况下:192.168.1.86:8080
让您的 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
而不是给 localhost 给 IP。
您应该使用以下命令更改 adb 端口:
adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881