我尝试使用nanohttpd演示应用程序在Android上设置一个简单的Web服务器而不进行修改。我正在使用的Android设备正在运行Android 4.0.3。
我可以从其他设备访问网络服务器,但我无法从运行Web服务器的同一Android设备上的浏览器(Firefox,Chrome和原生Android浏览器)连接到网络服务器。
我尝试了各种地址和端口组合但没有成功(localhost,127.0.0.1,10.0.0.2,实际分配的IP地址,端口8080,8082)。我也尝试过将nanohttpd应用程序直接绑定到127.0.0.1,但也没有成功。我已经验证我可以使用Android设备上的终端应用程序“ping”地址,因此看起来网络连接正常。
Android上是否存在阻止浏览器连接到本地Web服务器实例的限制,如果有,是否需要修改配置设置或权限才能使其正常工作?
答案 0 :(得分:2)
通过一系列的反复试验,我相信我已经掌握了正在发生的事情。当我从Web服务器应用程序切换到浏览器以尝试请求时,Web服务器应用程序将被挂起,因此不会接受连接。我曾假设应用程序在后台运行,但显然情况并非如此。
我将探讨如何将Web服务器作为后台服务运行,并查看它在哪里。
罗宾,非常感谢你今天早些时候回答。10/08/14 - 更新:将nanohttpd网络服务器嵌入Android服务后,所有工作都按照我原先的意图进行。我使用找到here的示例来定义服务。
KenSt
答案 1 :(得分:1)
1)您需要在AndroidManifest.xml中授予Internet权限。
<uses-permission android:name="android.permission.INTERNET" />
2)如果没有root,端口80也将无法使用。
有关详细信息,请参阅this question。
3)禁用设备上的任何VPN或代理应用或数据压缩
答案 2 :(得分:0)
将请求URL更改为 http://localhost:port ,或者,如果您想在仿真器上使用localhost的IP地址,则可以使用文档here。