将Android设备连接到本地主机上的Web服务
我为Android应用程序实现了一个Web服务。 Web服务正在我的本地主机(192.168.1.2)上运行。 使用Android模拟器,我成功连接到Web服务。 我试图使用debugging模式将我的Android设备连接到Web服务,但它不起作用。 所以我的问题是,如果可以连接一个Android设备到我的本地主机(192.168.1.2)上运行的这个Web服务而不使用真正的IP?
你已经解决了你的问题? 我也有一个像你这样的问题。 这些是我已经完成的步骤:
- 拔下网线或closures电脑上的其他networking连接。
- 使用USB连接您的Android手机到您的电脑。
- 打开usb tethering
- 回到你的电脑。 检查你的IP。 我的是192.168.42.37
- 检查你的电脑上的web服务应用程序。 比方说http://192.168.42.37/webserviceapp
- 回到你的Android手机。 试试这个urlhttp://192.168.42.37/webserviceapp
现在,您可以通过手机访问您的电脑上的web服务应用程序。
这是谷歌更简单的方式支持!
- 通过USB连接你的手机到电脑,并启用USBdebugging
- 在您的计算机上打开Chrome浏览器,然后input以下地址:
chrome://inspect/#devices
- 现在,您可以通过端口转发button将您的计算机端口链接到您的设备端口。 在我的电脑上,我有地址
localhost:61437
,我只是将其链接到设备的8081端口。 记住检查“启用端口转发”checkbox
-
从我的电脑上的服务(
localhost:61437
) -
屏幕从我的手机浏览器使用相同的服务(
localhost:8081
)。 就是这样。 您也可以在您的应用程序中使用此服务地址
那么你的本地主机是127.0.0.1(或:: 1),你的局域网IP是192.168.1.2。 在您的局域网中连接的每台电脑/设备都可以通过IP 192.168.1.2访问您的networking服务
您的Android设备必须在同一局域网内连接,可以通过Wifi连接,这样就可以与192.168.1.2进行通话。
如果你不能连接你的Android设备在相同的局域网,例如你只有一个3G连接,你需要玩你的路由器/防火墙redirect所有传入的stream量(也许只是HTTPstream量)从你的公共IP到你的私人IP 192.168.1.2)
希望这个帮助
我会投入我的过程,因为没有任何工作对我来说。 以下是我用来连接我的物理android设备和运行在我的笔记本上的web服务(连接到手机)的步骤:
-
在您的Android设备上启用USBdebugging
-
在您的机器上运行您的Web服务。 我的web服务运行在localhost,端口3000在开发中:
http://localhost:3000/api/...
-
运行
ifconfig
(Unix)或ipconfig
(Windows) - 在您的LAN接口上find您的机器的
inet
地址。 我的接口wlan0
是10.0.0.121。 外部,它是68.43.XX.XXX,这不是你想要使用的地址。 - 由于您连接到局域网上的服务,因此请使用局域网 IP,否则由于防火墙规则,您可能会收到一个
econnrefused
(连接被拒绝)错误 - 使用该IP地址和运行Web服务的端口来构build您的http URL。 对我来说,它是
http://10.0.0.121:3000/api/...
当你启动你的应用程序,你应该连接到你的本地Web服务日志,Wireshark等,你应该看到你的Android应用程序中所需的活动/数据。
我有同样的问题,研究了很多,然后发现你必须明确地做出防火墙设置的变化。 您的防火墙阻止您的代码从外部来源访问。 所以,你需要做的就是进入防火墙设置,为入站和出站添加端口80(在我的情况下,因为我使用的是Apache http服务器)。 现在,您可以在手机的浏览器http://192.16上testing它。 **:80 /
如果你不想在互联网上暴露你的DEV web服务,我同意其他答案作为好方法。 但是,如果你只是暴露web服务,那就容易多了。 有一些免费的DNS服务,但我发现没有IP是最容易设置。 我把它用于你问到的目的; 所以我可以用我的DEV web服务在真实的设备上进行testing。
如果您select使用no-ip(我与该公司没有任何关系,这只是我已经使用和熟悉的),您可以获得一个免费的可公开访问的URL,如http://MyExampleWebServer.no-ip -org ,no-ip有一个你可以安装的实用程序,即使你在一个dynamic的IP后面,它也会一直保持与这个URL相关的正确的外部IP。 如果你正在从你家工作,那么你只需要确保你将端口80的stream量转发到你的内部192.xxx IP地址(或者你使用的任何端口;对于ssl来说可能是443)。
就这么简单,现在你可以从任何可以访问互联网的设备上打这个web服务。
我没有与它合作,但我相信dyndns也提供类似的服务。
我使用GasMask和Charles Proxy Server在Mac上完成了这个工作。 你的手机和你的电脑必须在同一个networking上。
说你要访问的web服务url在http://api.xyz.com ,你首先使用GasMask将这个url指向你的本地主机,然后使用Charles来build立一个代理服务器。 然后,您转到手机上的设置,进入Wi-Fi,长按所连接的networking,select修改networking,然后inputCharles给您的代理设置。
此解决scheme适用于Eclipse中的GAE开发服务器
步骤1:获取LAN IP
转到您的Windows命令控制台(按Win + R,然后键入“cmd”)。 在控制台中input“ipconfig”。 你会看到一个显示列表。 在无线局域网适配器Wi-Fi下,获取IPv4地址。 这将是东西192.168.xx
局域网IP:192.168.xx
第2步:
转到Eclipse,打开Configured服务器
在GAE开发服务器的属性 – >本地接口地址绑定,inputLAN IP地址,并保存。
第3步:
现在你可以通过访问GAE服务器了
HTTP://192.168.xx:8888 /
8888 – 指GAE开发服务器中提到的端口号
要使用自己的服务器主机访问本地Web服务,而不是使用端口的IP地址,请执行以下步骤:
- 确保你的Android设备和你的本地机器在同一个networking上。
- 在Mac, Linux或任何其他代理服务器上安装SquidMan 。
- 将代理服务器的HTTPPort(例如5555)和客户端(例如192.168.0.0/24)configuration到您自己的networking掩码中,然后运行代理服务器。
-
您要么在以下位置使用Web服务:
一个。 网页浏览器:从修改WiFinetworkingconfigurationAndroid设备的代理设置。
湾 Android应用程序:为您的HTTP客户端设置代理。 如果您正在使用Volley,请查看: Volley Behind a Proxy server 。
- 您现在可以使用您在主机上使用的任何URL连接到它,以连接到Web服务(例如http://my-local-machine.com )
提示:如果您有4xx响应代码,请确保您的Web服务允许来自其他非本地主机的连接。
在我的情况下,这些解决scheme没有任何作用,因为Windows防火墙阻止它,但在防火墙上的规则没有影响。
在我的情况下的问题是,我的笔记本电脑连接到Wifi和Windows有像公共networking的Wifi连接。 我必须将networking连接更改为专用networking。 http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/
如果您是从Android模拟器引用您的系统上的localhost,那么您必须使用http://10.0.2.2:8080/因为Android模拟器在虚拟机(QEMU)内运行,因此127.0.0.1或localhost将是模拟器自己的回送地址。;