2013-03-09 112 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