ChatGPT解决这个技术问题 Extra ChatGPT

如何从 Android Emulator 连接到我的 http://localhost Web 服务器

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

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

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

P
Primal Pappachan

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

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

https://i.stack.imgur.com/m9eBE.png

您可以从 here 了解更多信息。


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

//i.stack.imgur.com/6mhd8.png


那么我们只是在主机文件中添加 10.0.3.2 吗?
P
Peter Mortensen

我在家用机器上成功使用了 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
D
Danger14

尝试 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 模拟器上工作
N
Nijat Ahmadli

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

adb reverse tcp:8000 tcp:8000

只需将其放到 Android Studio 终端即可。

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


如果您使用 ssl 和 openAuth,这是最好的选择。
如果您有 CORS 问题,也是最佳答案,非常感谢!
P
Paul Butcher

根据文档:

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

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


b
baybora.oren

对于我的 Mac OS 山狮设备:

http://10.0.2.2:8888

完美运行!


H
Hugh Jeffner

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

从应用商店安装 Android Terminal Emulator 发出 ip link show 命令以显示所有网络接口。特别感兴趣的是 eth1 接口 Issue ifconfig eth1 命令,显示 net as 172.17.100.15/255.255.255.0 Begin ping 地址从 172.17.100.1 开始,在“172.17.100.2”上命中。不确定防火墙是否会干扰,但在我的情况下没有

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


m
mostafa3dmax

如果您使用 Android 模拟器:

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

https://i.stack.imgur.com/ZhU2d.jpg

https://i.stack.imgur.com/ttFEX.png

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

https://i.stack.imgur.com/kLwNK.png

https://i.stack.imgur.com/0U4L9.png

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

https://i.stack.imgur.com/lga0n.png

如果您使用 Genymotion :

您可以通过此 IP 连接到机器 localhost:10.0.3.2:{port number} 或您的适配器 IP 地址,如上所述:在我的情况下:192.168.1.3:2080


S
Serge Stroobandt

允许安装 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:8000127.0.0.1:8000 上提供的渐进式 Web 应用程序 (PWA) 可以安装并连接到其 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

R
Ricardo

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


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

接受的答案是正确的,但在我的情况下不起作用。我必须在关闭主机上的公司 VPN 客户端的情况下创建虚拟设备。这是可以理解的,因为许多公司网络使用以 10 开头的地址(私有网络范围),这可能会干扰特殊地址 10.0.2.2


F
Fahad S. Ali

对于任何试图访问本地 IIS 服务器 (ASP.NET) 的人

对我来说,接受的答案还不够。我必须在 applicationhost.config 中添加 127.0.0.1 的绑定,这是我的 ASP.NET 解决方案的根目录。


E
Ed_

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


J
Jevgenij Kononov

我不知道,也许这个话题已经解决了,但是当我最近尝试在 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 年。
T
Tiago

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