2013-03-09 115 views
1

我为了自己的测试目的使用CakePHP构建了一个Web服务。无法从Android设备访问本地主机web服务

现在我使用我的真实Android设备来连接我的web服务(@localhost)。首先尝试,我设法加载我的测试页面。然后,我关闭了Apache服务器并测试它以确保它不可用。测试完成后,我又重新启动了Apache。但是,从那时起,我的Android设备无法加载我的页面(网页不可用)。我有摘要式身份验证对我的web服务的文件夹,并在第一次尝试,它适当地执行...

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

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

我能做些什么来解决这个问题吗?我需要使用真实的Android设备进行调试,因为模拟器对于工作来说太慢了。我四处搜索,发现了几个类似的问题,但没有一个没有帮助,因为就我而言,我曾经成功连接过该服务。只是一旦无法重新加载页面,并再也不会加载它...

在此先感谢。

*编辑* 我只是想在同一顺序使用Android模拟器,它成功地重新加载...我甚至尝试了我的实际设备的另一个浏览器(海豚浏览器),并且仍然无法加载我的网页...

+0

你确定你的设备仍然可以访问你的机器(在同一个网络中为您的机器当你重新连接)?如果是的话,当你重启你的apache时,你确定它正在监听所有的接口吗? – PCoder 2013-03-09 07:36:15

+0

感谢您的回复,PCoder!不幸的是,我的设备看起来不能连接到我的机器,但它们仍然在同一个网络上。看起来Apache是​​好的,因为即使在重新启动后,我的另一台机器也可以连接到Web服务。 – 2013-03-09 07:49:36

+0

'localhost'是'127.0.0.1',而不是'192.168.xxx.xxx'。您的服务器需要设置为响应“192.168.xxx.xxx”的非'localocal'地址才能工作。 – CommonsWare 2013-03-09 11:50:35

回答

1

Web服务器可能正在监听环回接口,但不在网络接口上。这意味着127.0.0.1localhost上的匹配将会起作用,但192.168.xxx.xxx不会(无论是来自本地主机,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

+0

谢谢你的回复,einnocent!现在我尝试了netstat命令,看起来问题在于你的想法(我的compter是windows系统,它表示TCP [::]:80)。所以我试图配置Apache来监听192.168.xxx.xxx:80。再次,从我自己的电脑连接到服务是成功的,但从我的Android设备不是。我以为它几乎在那里...... – 2013-06-02 01:58:55