284

我在localhost中创建了一个 php 脚本,我正在连接它,httpClient但我遇到了问题。

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

4

7 回答 7

711

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

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

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

于 2011-06-10T18:31:41.380 回答
62

用于10.0.2.2默认 AVD 和10.0.3.2Genymotion

于 2015-10-12T19:19:37.380 回答
49

谢谢,@lampShaded 的回答。

在您的 API/URL 中直接使用http://10.0.2.2:[your port]/并在模拟器设置下添加代理地址为 10.0.2.2 和端口号。更多内容可以访问:https ://developer.android.com/studio/run/emulator-networking.html

在此处输入图像描述

于 2019-04-10T06:26:14.193 回答
27

这最终对我有用。

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

在此处输入图像描述

  • 配置您的 Android 模拟器的代理以使用您的 IP 地址作为主机名和您的后端正在运行的端口作为端口(在我的情况下:192.168.1.86:8080 在此处输入图像描述

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

于 2019-12-06T16:58:34.617 回答
13

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

于 2020-03-27T00:54:44.710 回答
8

而不是给 localhost 给 IP。

于 2011-04-03T10:08:59.393 回答
8

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

adb reverse tcp:8880 tcp:8880; adb reverse tcp:8081 tcp:8081; adb reverse tcp:8881 tcp:8881
于 2018-08-06T12:37:45.660 回答