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

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

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


当前回答

我在Visual Studio上执行IIS Express上的web应用程序时也遇到了同样的问题。要修复它,你需要去你的项目属性,然后点击调试选项卡,将http://localhost:[your PORT]更改为http://127.0.0.1:[your PORT],并将android url设置为http://10.0.2.2:[your PORT]。这对我很管用。

其他回答

如果你正在使用一些第三方包,如node express或angular-cli,你需要找到你的机器的IP,并在服务器启动配置中将你的主机附加到该IP(而不是localhost)。然后使用IP从模拟器启动它。例如,我必须使用:ng serve -H 10.149.212.104来使用angular-cli。然后从我使用的模拟器:http://10.149.212.104:4200

你需要设置URL为10.0.2.2:portNr

portNr = ASP给出的端口。我当前的服务在localhost上运行:3229/ service .svc

我的url是10.0.2.2:3229

我用这种方法解决了我的问题

我希望它能有所帮助……

我在Visual Studio上执行IIS Express上的web应用程序时也遇到了同样的问题。要修复它,你需要去你的项目属性,然后点击调试选项卡,将http://localhost:[your PORT]更改为http://127.0.0.1:[your PORT],并将android url设置为http://10.0.2.2:[your PORT]。这对我很管用。

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

adb reverse tcp:54722 tcp:54722

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

对于Laravel宅基地用户: 如果任何人使用Laravel与homestead,您可以在模拟器中使用192.168.10.10访问应用程序后端

还是不行? 另一个好的解决方案是使用ngrok https://ngrok.com/