我在本地机器上运行一个web服务,该服务运行在localhost:54722上。

我想从Android模拟器中运行的应用程序调用该服务。

我读到在应用程序中使用10.0.2.2将访问localhost,但它似乎不能与端口号一起工作。它说HttpResponseException: Bad Request。


当前回答

默认AVD使用10.0.2.2,Genymotion使用10.0.3.2

其他回答

默认AVD使用10.0.2.2,Genymotion使用10.0.3.2

Localhost在启动时似乎在我的模拟器中工作得很好,然后我开始得到连接拒绝异常 我使用了127.0.2.2从模拟器浏览器,它工作,当我在模拟器中使用我的android应用程序时,它再次开始显示连接拒绝问题。

然后我做了ifconfig,我使用IP 192.168.2.2,它工作得很好

我不确定这个解决方案是否适用于每个Android模拟器和每个Android SDK版本,但运行下面的方法对我来说是有效的。

adb reverse tcp:54722 tcp:54722

您需要让模拟器运行起来,然后才能在运行的模拟器设备中成功地点击localhost:54722。

如果有人还在寻找这个,这就是我的工作方式。

您需要找到您的机器相对于您所连接的设备/模拟器的IP。对于模拟器的方法是按照以下步骤;

进入虚拟机虚拟框->在列表中选择连接的设备。 选择“设置”->网络->确认设备连接到哪个网络。对我来说,它是“VirtualBox主机专用以太网适配器#2”。 在virtualbox中进入“文件->首选项->网络->主机专用网络”,找到上面步骤中指定的网络的IPv4。(通过悬停你会得到信息)

提供这个IP以从模拟器访问本地主机。端口与您在运行/发布服务时提供的端口相同。

注意#1:确保您已经注意到防火墙和入站规则。

注意#2:请在重新启动计算机后检查此IP。由于某种原因,即使我提供了“使用以下IP”,主机IP也发生了变化。

1)在cmd下执行ipconfig命令

2)你会得到这样的结果

3)使用VMWare网卡1的IPv4地址加上端口号

在我的例子中是8080,所以不用localhost:8080

我使用的是192.168.51:8080

做……