从Android VM应用程序与Vagrant [Web服务]应用程序进行通信

时间:2016-12-30 07:58:39

标签: android vagrant

所以基本上我在VM中有一个Android应用程序(我通过Android Studio运行和调试)。 它与php RESTful webservice应用程序通信:https://mywebservice.mydomain.com。 我希望它实际上与我的本地Web服务应用程序(不是mywebservice.mydomain.com上的真实实时服务器)进行通信。 当我的Web服务应用程序直接在WAMP-ish设置上运行时,这很容易...... 我可以用:

创建一个hosts文件
10.0.2.2 mywebservice.mydomain.com

在运行时对VM执行'adb push hosts / etc / system / hosts'。 Android VM将10.0.2.2视为主机框,因此mywebservice.mydomain.com实际上将是我的个人WAMP VirtualHost,而不是真正的实时服务器。 注意我自己的盒子的主机文件,我有这个,所以我可以直接在我的Window浏览器中访问这个VirtualHost(如果我想轻松进入并更改Web服务中的一些管理员设置):

127.0.0.1 mywebservice.mydomain.com

(所有这一切都很容易,所以我可以调试完整的应用程序,从localhost Android App更改到我的localhost php web服务更改,或者直接在Windows上检查php web服务应用程序[它有一个登录管理员UI])。

现在我希望网络服务php应用程序不在WAMP中运行,而是在Vagrant linux框中运行(我已经运行并且可以从我的Windows浏览器访问,现在假装通过默认的puphpet url {{ 3}}。现在确定我可以将其更改为mywebservice.mydomain.com而不是通过Windows访问),但我无法弄清楚如何让我的Android VM应用程序仍然“指向”那里(通过主机文件或一些也许在不同的Vagrant网络设置下,像IP地址这样的替代方法?)。 我不确定那里是否有任何好的想法,因为我尝试谷歌搜索并没有太多运气。 有什么想法吗?

如果我能在不修改Android java源代码的情况下做到这一点,那将是很棒的。也许可以将Java代码中的Web服务URL更改为指向VM框的IP地址。我还没有尝试过,但首先是在寻找一些想法。

1 个答案:

答案 0 :(得分:1)

只要您的Linux机箱与您的VM在同一网络上(您的主机是精确的),您仍然可以使用之前使用过的/ etc / system / hosts,只需将其指向linux的IP。

或者,您可以将VM指向代理,以便所有HTTP流量都通过它,然后由您决定使用哪个代理(取决于您的主机操作系统)以及如何配置它以重定向到您的Linux机箱