2013-08-19 101 views
1

我有一個Android應用程序連接到一個託管數據庫來獲取數據。如何訪問託管在服務器上的PHP文件?

在localhost上測試時,它工作得很好。

我把數據庫移動到託管服務器,幾天前,當試圖運行應用程序,它從數據庫中提取數據時引發錯誤。

錯誤:

08-19 06:57:28.579: E/JSON Parser(32067): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject

<!DOCTYPE是不是在任何數據庫中的表的值(我查和雙重檢查)。相反,<!DOCTYPE是'index.html'文件中的第一行,它也託管在同一臺服務器上。

該應用正在使用的URL是:http://ipaddress/filename.php

在閱讀由網絡託管公司提供的文檔時,我記得閱讀了一些說'服務器將index.html視爲此目錄的主頁或默認頁面'的內容。基本上,當我輸入「www.someaddress.com」或其IP時,它會返回index.html。我猜測,當應用程序ping url中提供的IP地址時,index.html文件正在返回(甚至有可能?)。

問題是,我該如何解決這個問題?有沒有人遇到同樣的問題?

在此先感謝。

+3

很可能,您不需要正確的腳本。在android設備上打印返回的數據以查看返回的數據。 – SteAp

回答

2

我想出了問題。我的猜測是正確的:index.html文件被返回,並且json解析器試圖將其轉換爲jsonobject並因此發生錯誤。

但是,這是我應該檢查的另一個問題發生原因:

Android應用程序是使用http://ipaddress/filename.php從服務器獲取數據。當我嘗試在瀏覽器上使用相同的網址時,它返回403 forbidden。我用www.sitename.com/filename.php替換了url,它按預期返回了一個json響應。

替換應用中的所有網址以匹配www.sitename.com/filename.php而不是http://ipaddress/filename.php後,它開始正確提取數據。

由於某些原因,當我在android應用中使用http://sitename.com/filename.php時,它也返回index.html。我不得不將http://全部替換爲www.才能使用。

感謝SteAp的幫助!

相關問題