无法从Android设备访问localhost Web服务

时间:2013-03-09 07:31:45

标签: android web-services apache localhost

我已经使用CakePHP构建了一个Web服务,用于我自己的测试目的。

现在我使用真正的Android设备连接我的网络服务(@localhost)。首先尝试,我设法加载我的测试页面。然后,我关闭了Apache服务器并测试它以确保它不可用。测试完成后,我再次重启Apache。但是,从那以后我的Android设备无法加载我的页面(网页不可用)。我的网络服务文件夹上有摘要式身份验证,首次尝试时,它已正确执行...

到目前为止我所做的是:
1.使用我的真实Android设备(不是模拟器)连接我的本地主机(http://192.168.xxx.xxx) 2.弹出摘要验证。
3.输入用户名&密码。成功连接。
4.关闭Apache服务器 5.尝试再次连接我的本地主机(当然,“网页不可用”) 6.重新启动Apache服务器 7.尝试再次连接我的localhost(重新加载永远不会再次工作......)

起初我认为这可能是缓存问题或其他问题。所以我已经清除了所有缓存和我的Android网络浏览器的任何表格数据,并尝试重新加载。但它永远不会重新加载。然后,我尝试从另一台PC连接并成功连接。只有Android设备无法重新加载我的页面。

我有什么办法可以解决这个问题吗?我需要使用我真正的Android设备进行调试,因为模拟器对于作业来说太慢了。我搜索过并发现了几个类似的问题,但没有一个没有帮助,因为在我的情况下,我曾经成功连接到该服务。只是一次无法重新加载页面,再也没有加载它......

提前致谢。

*编辑* 我刚刚使用Android模拟器尝试了相同的序列,并成功重新加载...我甚至为我的真实设备尝试了另一个浏览器(Dolphin Browser),仍然无法加载我的页面......

1 个答案:

答案 0 :(得分:1)

Web服务器可能正在侦听环回接口,但不在网络接口上侦听。这意味着127.0.0.1localhost上的点击将有效,但192.168.xxx.xxx不会(无论是来自localhost,LAN还是WAN)。

要确定服务器正在侦听哪个接口,请查看here以获取告诉您有关侦听端口的命令(我使用lsof -Pan -i tcp -i udp)。然后在列表中查找您的服务器进程。对于lsof命令,如果对于端口8888,您会看到类似TCP *:8888 (LISTEN)的内容,那么您的服务器正在侦听所有接口。但是,如果你看到像TCP [::127.0.0.1]:8888 (LISTEN)这样的东西,那么你已经确定了你的问题!

解决问题的下一步是设置服务器的运行配置以侦听所有接口。我对CakePHP一无所知,但如果您可以指定IP地址,那么您可能想尝试0.0.0.0。通常,您可以在允许指定侦听端口的位置附近执行此操作。因此,如果您有如下配置:

--port 8888

然后你可以尝试:

--port 8888 --address 0.0.0.0