如何从同一局域网上的另一台计算机连接到Android设备上运行的Web服务?

时间:2014-12-02 16:24:54

标签: android rest service portforwarding

基本上我的开发机器和手机都在同一个(WiFi)网络上,我需要能够通过我的PC向设备上的localhost上运行的服务发送和接收JSON(我在移动应用程序上工作)有一个在本地作为服务运行的组件。我看过Chrome的端口转发但无法让它工作。有人在Mac上使用它吗?

3 个答案:

答案 0 :(得分:0)

如果你的开发者和你的手机在你的wifi网络的同一个子网上,你应该能够使用静态IP进行测试。不需要端口转发(除非您使用WAN IP或设置DNS服务,否则无法获得帮助)。

基本上,如果您的服务器的本地IP为192.168.1.17,请将其用作Android应用程序的端点。如果以相反的方式工作,有一些IP工具应用程序可以帮助您获得Android设备的IP。

答案 1 :(得分:0)

如果您在开发过程中只需要连接,只需使用手机的IP设置套接字就可以了。

发送脚本

import socket

HOST = ''    # device ip
PORT = ''    # your service's listening port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
with open("data.json", "rb") as f:
    data = f.read()
    s.send(data)
    s.close()

接收方式几乎相同。

答案 2 :(得分:0)

管理解决这个问题:

  • 在我的桌面计算机上使用“adb forward tcp:LOCALPORT tcp:REMOTEPORT”将服务正在侦听的端口(REMOTEPORT)转发到桌面上的本地端口(LOCALPORT)

  • 我试图与之交谈的服务需要额外的auth标头,我在测试curl时没有添加。我使用'adb logcat'检索了auth标头所需的密钥(因为我的应用程序在启动时将其写入控制台)。要为每个请求添加身份验证标头,我使用了Chrome扩展程序(Postman)来自动添加auth标头来处理请求。

  • 我现在可以在桌面上使用Chrome中的Postman向localhost:LOCALPORT发送请求,并将响应视为JSON。

仅供参考,我在设备上使用Couchbase Lite,并试图弄清楚如何与它进行对话以运行数据库查询。