从Android VM应用程序到Vagrant通信[web服务]应用程序

问题描述:

所以基本上我有一个虚拟机中的Android应用程序(我运行&通过Android Studio进行调试)。 它与一个php REST风格的web服务应用程序通信:https://mywebservice.mydomain.com。 我希望它实际上与我的本地Web服务应用程序(而不是mywebservice.mydomain.com上的真实服务器)进行通信。 当我有我直接在WAMP十岁上下的安装运行Web服务应用程序,这是很容易... 我可以创造一个与主机文件:从Android VM应用程序到Vagrant通信[web服务]应用程序

10.0.2.2 mywebservice.mydomain.com 

,并做了“亚行推动主机的/ etc /系统/主机'在虚拟机运行时。 Android VM认为10.0.2.2是主机箱,因此mywebservice.mydomain.com实际上是我个人的WAMP VirtualHost,而不是真正的实时服务器。 注意我自己的框的hosts文件,我有这个,所以我可以在我的窗口的浏览器直接访问该虚拟主机(如果我想很容易进入并改变例如Web服务的一些管理设置):

127.0.0.1 mywebservice.mydomain.com 

(并且所有这些都使得它很容易,所以我可以调试完整的应用程序,从本地主机Android应用程序更改到本地主机php web服务更改,或者直接在Windows上检查出php web服务应用程序[它有一个登录管理界面] )。

现在我想让网络服务的php应用程序不是运行在WAMP中,而是运行在一个Vagrant linux机器上(我已经运行并且可以从我的Windows浏览器访问,现在通过默认的输入地址https://awesome.dev 。现在确定我可以改为mywebservice.mydomain.com,而不是通过Windows访问),但我无法弄清楚如何让我的Android VM应用程序仍然“指向”(通过主机文件或一些替代方法在不同的Vagrant网络设置下的IP地址可能?)。 我不确定是否有任何好的想法,因为我尝试了谷歌搜索,没有多少运气。 任何想法?

PS这将是伟大的,如果我能做到这一点,而无需修改Android Java源代码。也许可以改变Java代码中的Web服务URL来指向VM框的IP地址。我还没有尝试过,但是首先在寻找一些想法。

只要你的Linux机器是你的虚拟机在同一网络上(你的主机要准确),你仍然可以使用他们的方式你以前使用过的/ etc /系统/主机,只需将它指向的Linux的IP。

或者,您也可以指向虚拟机代理,因此所有的HTTP流量会经过它,那么它取决于你使用什么代理(取决于您的主机操作系统上),以及如何配置它重定向到你的Linux机器

+0

所以我看到的Android VM是一个模拟的3G连接(无法通过Wifi连接到我的wifi网络)。如果我将'adb shell'加入到Android VM中,我只会将10.0.2.15看作eth0 IP(不知道它是否真的在使用3G模拟进行使用)...... Vagrant VM的默认值为192.168.56.101,它的'private_network '地址(我可以更改为'public_network',因此可以获得与我的笔记本电脑相同的IP范围地址,因此如果我的个人笔记本电脑是192.168.1.248,那么我会为Vagrant VM Web服务获得192.168.1.249)。无论哪种方式,如果Android VM主机拥有流动虚拟机的公共或私有IP地址,则该方法无效。 – armyofda12mnkeys

+0

有关您的替代方案的第二个问题...您的代理将所有HTTP通信给Vagrant虚拟机(ssh转发或在Windows上的更简单的程序代理)如何? – armyofda12mnkeys

+0

按照第二个问题这真的取决于你有得心应手,任何赢得或Linux代理会做 –