Android emulator 如何在Android emulator中连接localhost?

Android emulator 如何在Android emulator中连接localhost?,android-emulator,localhost,httpconnection,androidhttpclient,Android Emulator,Localhost,Httpconnection,Androidhttpclient,我在localhost中创建了一个php脚本,并将其与httpClient连接,但我遇到了一个问题 请告诉我如何从emulator连接到localhost上的php文件?而不是给localhost提供IP。使用10.0.2.2访问实际机器。 正如您所了解的,当您使用emulator时,localhost(127.0.0.1)指的是设备自己的环回服务,而不是您可能期望的机器上的环回服务 您可以使用10.0.2.2访问实际机器,它是一个别名,用于帮助开发。使用10.0.2.2作为默认AVD,使用10

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


请告诉我如何从emulator连接到localhost上的php文件?

而不是给localhost提供IP。

使用
10.0.2.2
访问实际机器。 正如您所了解的,当您使用emulator时,
localhost
127.0.0.1
)指的是设备自己的环回服务,而不是您可能期望的机器上的环回服务


您可以使用10.0.2.2访问实际机器,它是一个别名,用于帮助开发。

使用10.0.2.2作为默认AVD,使用10.0.3.2作为Genymotion

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

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

谢谢你的回答

在API/URL中直接使用
http://10.0.2.2:[您的端口]/
并在emulator设置下添加代理地址10.0.2.2和端口号。有关更多信息,您可以访问:


这就是我最终的成功之处

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

  • 配置Android仿真器的代理以使用您的IP地址作为主机名,并将您的后端正在运行的端口作为端口(在我的示例中:192.168.1.86:8080)

  • 让您的Android应用程序将请求发送到同一URL(192.168.1.86:8080)(将请求发送到localhost,但不适用于我)


    • 感谢本博客的作者:

      用xml定义网络安全配置

      <network-security-config>
          <domain-config cleartextTrafficPermitted="true">
             <domain includeSubdomains="true">10.0.2.2</domain>
          </domain-config>
      </network-security-config>
      
      为我解决了这个问题


      请参考:

      Nice虽然这对例如oauth不太有用,但是在这种情况下clientID仅对
      localhost有效
      10.0.2.2在https localhost中对我不起作用,在https中我是否必须使用不同的ip?但是您需要将API从“localhost:port”更改为“127.0.0.1:port”首先。在那之后,使用10.0.2.2访问您的实际机器。请编辑您的答案以包括genymotion旁路。如果您想在API 28+中支持,也应该这样做:应该在哪里编写?为我自己的智能手机设备编写什么?如果您想在API 28+中支持,也应该这样做:什么IP?我在本地服务器中工作时没有公共IP,您的意思是环回ip
      127.0.0.1
      ?获取您的ip地址(Windows上的ipconfig),这里IP是指IPv4,如192.168.100.4这是唯一对我有效的解决方案。关键点:应用程序将请求发送到与代理设置相同的URL和端口。这对我也有效,但我相信代理是不必要的-我的Flask服务器上的日志显示,配置代理时,AVD生成了大量奇怪和不必要的GET并连接了该结果404s中的ed。切换回
      使用Android Studio HTTP代理设置
      修复了它,现在服务器只接收我明确想要的有效请求。为了方便起见,您可以做的另一件事是为您的机器分配一个静态IP地址,例如通过路由器设置,以便DHCP无法更改它。无法工作对我来说。我已经在etc/hosts中为我的网站添加了自定义名称。现在我想在android模拟器中访问mywebapp.local URL。我该怎么做呢?omg!你救了我的命!!虽然你没有直接回答这个问题,但你肯定救了我的命,因为明文Http是不允许的问题。
       <application
          android:networkSecurityConfig="@xml/network_security_config"
      </application>