【发布时间】:2011-07-28 13:59:03
【问题描述】:
我在 localhost 中创建了一个 php 脚本,我正在将它与 httpClient 连接,但我遇到了问题。
请告诉我如何从模拟器连接到 localhost 的 php 文件?
【问题讨论】:
标签: android-emulator localhost httpconnection androidhttpclient
我在 localhost 中创建了一个 php 脚本,我正在将它与 httpClient 连接,但我遇到了问题。
请告诉我如何从模拟器连接到 localhost 的 php 文件?
【问题讨论】:
标签: android-emulator localhost httpconnection androidhttpclient
10.0.2.2 访问您的实际机器。如您所知,当您使用模拟器时,localhost (127.0.0.1) 指的是设备自己的环回服务,而不是您所期望的机器上的环回服务。
您可以使用 10.0.2.2 来访问您的实际机器,它是为帮助开发而设置的别名。
【讨论】:
localhost 有效
http://10.0.2.2:<port_your_server_runs_on>/<path> 访问服务器上定义的端点。
将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 对我不起作用)
【讨论】:
Use Android Studio HTTP proxy settings 修复了它,现在服务器只接收我明确想要的有效请求。为方便起见,您可以做的另一件事是为您的机器分配一个静态 IP 地址,例如通过您的路由器设置,这样 DHCP 就无法更改它。
感谢本博客作者: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。
【讨论】:
127.0.0.1 吗?
您应该使用以下命令更改 adb 端口:
adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881
【讨论】: