【问题标题】:How to connect to my http://localhost web server from Android Emulator如何从 Android Emulator 连接到我的 http://localhost Web 服务器
【发布时间】:2020-12-02 08:12:22
【问题描述】:

我可以在 Android 模拟器中执行哪些操作以将其连接到位于 http://localhosthttp://127.0.0.1 的本地主机 Web 服务器页面?

我已经尝试过了,但模拟器仍然接受我的请求,就像谷歌搜索本地主机一样,或者更糟糕的是,它说在我的网络服务器正常运行时它没有找到该页面。

【问题讨论】:

  • 这个问题是关于 Android Emulator 并且有适用于那种情况的解决方案单独。如果您在使用物理 Android 设备时遇到此问题,请参阅stackoverflow.com/questions/4779963/…

标签: android android-emulator localhost loopback-address


【解决方案1】:

本地主机是指运行代码的设备,在本例中是模拟器。

如果要引用运行Android模拟器的计算机,请改用IP地址10.0.2.2

您可以从here阅读更多内容。

【讨论】:

  • 为什么要提到其他问题?只需添加链接Android emulator Networking
  • 感谢您指出链接。我猜答案发布时它不存在。
  • @primpap :我可以用机器名代替ip地址吗??
  • @primpap 这不适用于移动调试。还有其他的吗?或者我在某处犯了错误,因为 10.0.2.2 在模拟器上工作,但当我连接移动设备进行 USB 调试时无法工作。 ?
  • 此解决方案仅适用于模拟器,如此处具体问题中所述。那些在物理 Android 设备上调试的人必须使用服务器的实际 IP 地址或名称,他们不能使用这个特殊的模拟器专用别名。 这个答案很好 - 但读者需要注意他们的情况是适用
【解决方案2】:

10.0.2.2 用于默认AVD,将10.0.3.2 用于

【讨论】:

  • 那么我们只是在主机文件中添加10.0.3.2 吗?
【解决方案3】:

我在家里的机器上成功使用了10.0.2.2,但是在工作中,它不起作用。经过几个小时的鬼混,我使用Android Virtual Device (AVD) 管理器创建了一个新的模拟器实例,最后 10.0.2.2 工作了。

我不知道其他模拟器实例出了什么问题(平台相同),但是如果您发现 10.0.2.2 不起作用,请尝试创建一个新的模拟器实例。

【讨论】:

  • 不幸的是,即使在创建新的 AVD 实例之后,它对我也不起作用。你有什么建议?要重新安装所有内容?
  • 我知道这是旧的,但是如果您发现 10.0.2.2 不是作为计算机 IP 工作的,请按照以下说明查找它gtricks.com/android/how-to-find-ip-address-on-android
【解决方案4】:

尝试http://10.0.2.2:8080/,其中8080 是您的端口号。它工作得很好。如果您只是尝试10.0.2.2,它将无法正常工作。您需要为其添加端口号。此外,如果已安装 Microsoft IIS,请尝试从控制面板关闭该功能(如果使用任何 Windows 操作系统),然后按照上述方法尝试。

【讨论】:

  • 如果页面托管在 IIS 上会怎样?
  • @Marimba 只需弄清楚您的 IIS 服务器在哪个端口上提供服务,然后访问 10.0.2.2:your_iis_port
  • 这是一个完整的字符串,唯一在我的 android 8.1 模拟器上工作
【解决方案5】:

您实际上可以在每次运行模拟器时使用localhost:8000 连接到您机器的本地主机(仅在 Mac 上测试):

adb reverse tcp:8000 tcp:8000

把它放到Android Studio终端就行了。

它基本上设置了一个反向代理,其中运行在您手机上的 http 服务器接受端口上的连接并将它们连接到您的计算机,反之亦然。

【讨论】:

  • 如果您使用 ssl 和 openAuth,这是最好的选择。
【解决方案6】:

根据文档:

10.0.2.2 - 主机环回接口的特殊别名(即开发机器上的 127.0.0.1)

查看Emulator Networking 了解更多关于模拟器网络的技巧。

【讨论】:

    【解决方案7】:

    对于我的 Mac OS Mountain Lion 设备:

    http://10.0.2.2:8888

    完美运行!

    【讨论】:

      【解决方案8】:

      我需要找出模拟器“Nox App Player”的系统主机 IP 地址。这是我发现它是172.17.100.2的方法。

      1. 从应用商店安装了 Android Terminal Emulator
      2. 发出ip link show 命令以显示所有网络接口。特别感兴趣的是 eth1 接口
      3. 发出ifconfig eth1 命令,显示网络为172.17.100.15/255.255.255.0
      4. 172.17.100.1 开始 ping 地址,在 `172.17.100.2' 上得到了命中。不确定防火墙是否会干扰,但在我的情况下没有

      也许这可以帮助其他人为其他模拟器解决问题。

      【讨论】:

        【解决方案9】:

        如果您使用 Android 模拟器:

        您可以通过这些 IP 连接到您的 PC 本地主机: 10.0.2.2:{port of your localhost} => 如果您在 xamp 中设置机器端口,则必须使用该端口。在我的情况下10.0.2.2:2080

        您也可以使用您的网络适配器 IP。在 CMD 中写入 ipconfig 并找到您的适配器 IP 地址:

        如果模拟器无法连接到此 IP,请关闭模拟器并通过 AVD Manager 中的cold boot 打开它:

        如果您使用 Genymotion:

        您可以通过此 IP 连接到机器 localhost:10.0.3.2:{port number} 或者我上面解释的你的适配器IP地址:在我的例子中:192.168.1.3:2080

        【讨论】:

          【解决方案10】:

          允许安装 PWA

          首先,安装Android调试桥:

          $ sudo apt install adb android-sdk-platform-tools-common
          

          像往常一样启动你的安卓模拟器,例如:

          $ ~/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86
          

          只有这样,在 Android 模拟器的网桥上配置一个reverse proxy,它会将localhost HTTP 请求转发到您主机上运行的localhost 服务器的适当端口(例如 8000),反之亦然:

          $ adb reverse tcp:8000 tcp:8000
          

          localhost:8000 上提供的渐进式 Web 应用程序 (PWA) 或127.0.0.1:8000 将可安装并连接到其service-worker.js而不允许从IP地址10.0.2.2安装PWA。

          警告:adb reverse tcp:8000 tcp:8000 需要每次 Android 模拟器调用后重新发布。

          因此,用于启动 Android 模拟器的 bash 脚本,后跟反向代理,如下所示:

          #!/usr/bin/env bash
          
          $HOME/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86 > /dev/null 2>&1
          
          adb reverse tcp:8000 tcp:8000
          

          【讨论】:

            【解决方案11】:

            如果你在 Windows 中,你可以进入 simbol 系统并编写 ipconfig 并检查分配给你的机器的 ip。

            【讨论】:

            • 从模拟器调试时不需要这样做,因为您可以使用其他答案中引用的主机环回接口的特殊别名。但是,如果从物理 android 设备进行调试,那么是的,您需要确定测试服务器的实际地址并使用它。
            【解决方案12】:

            另一种解决方法是从 no-ip.org 获取一个免费域并将其指向您的本地 IP 地址。 然后,您可以尝试使用http://yourdomain.no-ip.org/yourwebservice,而不是使用http://localhost/yourwebservice

            【讨论】:

              【解决方案13】:

              我不知道,也许这个话题已经解决了,但是当我最近尝试在 Windows 机器上做这个时,我遇到了很多困难。 所以我的解决方案非常简单。我下载了这个软件 http://www.lenzg.net/rinetd/rinetd.html 遵循他们关于如何进行端口转发的说明,然后成功地将我的 android 设备连接到制作 asp.net localhost 项目并在我的断点处停止。

              我的 rinetd.conf 文件:

              10.1.1.20 1234 127.0.0.1 1234
              10.1.1.20 82 127.0.0.1 82
              

              10.1.1.20 是我的 localhost ip,82 和 1234 是我的端口 我也创建了浴文件 为方便起见 yournameofbathfile.bat,将该文件放在 rinedfolder 中。我的沐浴档案:

              rinetd.exe -c rinetd.conf
              

              启动此软件后,启动您的 aps.net 服务器并尝试从 android 设备或本地网络中的任何设备访问(例如 Computer ABC 启动 putty),您将看到一切正常。无需去路由器设置或做任何其他复杂的事情。 我希望这能帮到您。享受吧。

              【讨论】:

              • 您的解决方案没有任何“简单”之处。为此目的使用 Google 提供的 10.0.2.2 很简单。要知道某个主题是否已解决,在接受的答案上有一个绿色复选标记。在你回答之前它已经存在了将近 6 年。
              【解决方案14】:

              我知道这是旧的,但是如果你发现 10.0.2.2 不是作为计算机 IP 工作的,请关注these instructions 找到它

              【讨论】:

                【解决方案15】:

                10.0.2.2 是为基础机器 localhost 制作的别名。

                端口号相同:1521无需更改

                abs 对我来说很好用..

                【讨论】:

                • 端口是废话。它必须是服务器绑定的端口。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-01-13
                • 2021-01-01
                • 1970-01-01
                • 2014-09-10
                • 1970-01-01
                相关资源
                最近更新 更多