将Android设备连接到本地主机上的Web服务

时间:2011-05-30 13:01:19

标签: android-emulator android

我为Android应用程序实现了一项Web服务。 Web服务正在我的本地主机(192.168.1.2)上运行。使用Android模拟器我成功连接到Web服务。我尝试使用调试模式将我的Android设备连接到Web服务,但它无法正常工作。所以我的问题是,是否有可能将Android设备连接到本地主机(192.168.1.2)上运行的此Web服务而不使用真正的IP?

11 个答案:

答案 0 :(得分:33)

你已经解决了问题吗?我也有像你这样的问题。这些是我已经完成的步骤:

  1. 从计算机上拔下LAN连接线或关闭任何其他互联网连接。
  2. 使用usb将您的Android手机连接到您的电脑。
  3. 打开usb tethering
  4. 回到你的电脑。检查你的IP。我的是192.168.42.37
  5. 在您的电脑上查看您的网络服务应用。让我们说http://192.168.42.37/webserviceapp
  6. 回到你的Android手机。试试这个网址http://192.168.42.37/webserviceapp
  7. 现在,您可以通过手机访问电脑中的网络服务应用程序了。

答案 1 :(得分:29)

It's much simpler way supported by google!

  • Connect your phone via usb to computer and enable usb debugging
  • On your computer open Chrome browser and type exactly this address: chrome://inspect/#devices enter image description here
  • Now you can link your computer port to your device port by port forwarding button. On my computer I have service on address localhost:61437 and I just linked it to device's 8081 port. Remeber to check 'Enable port forwarding' checkbox

enter image description here

  • screen from service on my computer ( localhost:61437 ) enter image description here

  • screen from my mobile browser with the same service ( localhost:8081). And that's it. Also you use this service address in your application enter image description here

答案 2 :(得分:13)

您的localhost是127.0.0.1(或:: 1),您的LAN IP是192.168.1.2。在LAN下连接的每台PC /设备都可以通过IP 192.168.1.2

访问您的Web服务

您的Android设备必须通过Wifi连接在同一LAN下连接,以便能够与192.168.1.2通话。

如果你无法在同一局域网下连接你的Android设备,例如你只有一个3g的连接,你需要使用你的路由器/防火墙将所有传入的流量(可能只是http流量)从你的公共IP重定向到你私人IP(192.168.1.2)

希望这个帮助

答案 3 :(得分:5)

我会投入我的过程,因为SO上的任何内容都不适合我。以下是我将物理安卓设备连接到我的笔记本电脑上运行的网络服务(连接到手机)上的步骤:

    Android设备上的
  1. Enable USB debugging

  2. 在您的计算机上运行您的网络服务。我的Web服务在localhost,开发中的端口3000上运行:http://localhost:3000/api/...

  3. 运行ifconfig(Unix)或ipconfig(Windows)

  4. LAN 界面上找到您计算机的inet地址。对于接口wlan0,我的是10.0.0.121。在外部,它是68.43.XX.XXX,您想要使用的地址。
  5. 使用 LAN IP,因为您要连接到LAN上的服务,否则由于防火墙规则可能会出现econnrefused(连接被拒绝)错误
  6. 使用该IP地址以及运行Web服务的端口构建您的http URL。对我来说,它是http://10.0.0.121:3000/api/...
  7. 当您启动应用程序时,您应该在日志,Wireshark等中连接到本地Web服务,并且您应该在Android应用程序中看到所需的活动/数据。

答案 4 :(得分:2)

我遇到了同样的问题,研究了很多,然后发现你必须明确地在防火墙设置中进行更改。您的防火墙阻止您从外部源访问您的代码。因此,您需要做的就是,进入防火墙设置,添加端口80(在我的情况下,我使用Apache http服务器)用于入站和出站。现在,您可以在手机的浏览器http://192.16 上进行测试。。**:80 /

答案 5 :(得分:1)

如果您不想在互联网上公开您的DEV网络服务,我同意其他答案是很好的方法。但是,如果只暴露Web服务,则会更容易。有许多免费的DNS服务,但我发现no-ip是最容易设置的。我将它用于你所询问的目的;所以我可以在真实设备上使用我的DEV webservice进行测试。

如果您选择使用no-ip(我与该公司没有任何关系,它只是我使用过的并且熟悉的那个),您可以获得免费的可公开访问的网址,例如http://MyExampleWebServer.no-ip-org,并且no-ip有一个你可以安装的实用程序,所以即使你是一个动态IP,它也将始终保持与该URL相关联的正确外部IP。如果您在家中工作,那么您只需确保将流量从端口80转发到内部192.x.x.x IP地址(或您使用的任何端口;对于ssl可能为443)。

就这么简单,现在您可以从任何可以访问互联网的设备上点击该网络服务。

我没有使用它,但我相信dyndns也提供类似的服务。

答案 6 :(得分:1)

我在Mac上使用GasMask和Charles Proxy Server完成了这项工作。您的手机和计算机必须位于同一网络上。

说要访问的webservice网址是http://api.xyz.com,首先使用GasMask将该网址指向您的localhost,然后使用Charles设置代理服务器。然后,您转到手机上的设置,进入Wi-Fi,长按所连接的网络,选择修改网络,然后输入Charles给您的代理设置。

答案 7 :(得分:1)

就我而言,这些解决方案都不起作用,因为Windows防火墙会阻止它,但是在防火墙上设置规则并不会起作用。

我的问题是我的笔记本电脑与Wifi连接,Windows有像公共网络一样的Wifi连接。我必须将网络连接更改为专用网络。 http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/

答案 8 :(得分:0)

此解决方案适用于Eclipse中的GAE开发服务器

第1步:获取LAN IP

转到Windows命令控制台(按Win + R,然后键入" cmd")。在控制台中,输入" ipconfig"。您将看到显示列表。在无线LAN适配器Wi-Fi下,获取IPv4地址。它将是192.168.x.x

LAN IP:192.168.x.x

第2步:

转到Eclipse,打开已配置的服务器

GAE Server

在GAE开发服务器的属性下 - >要绑定的本地接口地址,输入LAN IP地址,然后保存。

第3步:

现在您可以通过

访问GAE服务器

http://192.168.x.x:8888/

8888 - 参考GAE开发服务器

中提到的端口号

答案 9 :(得分:0)

要使用自己的服务器主机而不是带端口的IP地址访问本地Web服务,请执行以下步骤:

  1. 确保您的Android设备和本地计算机位于同一网络上。
  2. 在Mac,SquidMan或任何其他代理服务器上安装Linux
  3. 将代理服务器的HTTPPort(例如5555)和客户端(例如192.168.0.0/24)配置为您自己的网络掩码,然后运行代理服务器。
  4. 您正在使用以下网址:

    一个。网络浏览器:从修改WiFi网络配置Android设备的代理设置。

    湾Android应用程序: 为HTTP客户端设置代理。如果您使用的是Volley,请查看:Volley Behind a Proxy server

  5. 您现在可以使用主机上用于连接到网络服务的任何网址连接到它(例如http://my-local-machine.com
  6. 提示:如果您有4xx响应代码,请确保您的Web服务允许来自其他非本地主机的连接。

答案 10 :(得分:-3)

如果您从Android模拟器中引用系统上的本地主机,则必须使用 http://10.0.2.2:8080/  因为Android模拟器在虚拟机(QEMU)内部运行,因此127.0.0.1或localhost将是模拟器自己的环回地址。