我正在通过 ASP.net/Visual Studio 运行与 Android 应用程序一起开发的服务。当我通过 VS 运行该服务时,可以通过 http://localhost:13980/
访问它,但不能通过 http://127.0.0.1:13980/
(这给出了一个“错误的请求 - 无效的主机名”400 错误)。显然,我不能告诉 Android 应用程序在“localhost”寻找服务,因为它会指向它自己。
我了解 ( according to this page ) Android 模拟器将 10.0.2.2 视为主机 127.0.0.1 的直通 IP 地址,因此如果我 a) 获得 localhost通过 127.0.0.1 正确公开,并且 b) 将应用程序中的目标地址从 localhost:port 更改为 10.0.2.2:port。
我将如何着手完成 A 部分?我运行的是 Windows 8.1 Pro、Visual Studio 2012,并且相关项目的目标是 .NET 4.5。
谢谢!
最佳答案
你有两个选择:
- 在 IIS 而不是 VS Cassini 下运行网络服务。这样您就可以将 Web 服务绑定(bind)到本地网络的 IP 地址,例如
http://10.0.2.2:8081
- 修改 Android 模拟器上的主机文件,将本地主机重定向到您计算机的 IP 地址
第二个不是很好的解决方案。它可能会导致与操作系统发生一些冲突,我什至不确定卡西尼号是否仍会满足该请求。 Visual Studio 的内置 Web 服务器 (Cassini) 仅监听本地请求,因此选项 (1) 确实是最灵活的。另外,因为你有 W8 Pro IIS is already built-in .
关于android - 将本地主机上运行的服务暴露给 Android 模拟器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066625/