我有一个安卓应用程序,它连接到托管数据库以获取数据。
在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文件(这可能吗?)。
问题是,我该如何解决这个问题?有人遇到过同样的问题吗?
提前谢谢。
我解决了这个问题。我的猜测是正确的:index.html文件被返回,json-pasor试图将其转换为jsonobject,因此出现了错误。
但这是由于另一个问题而发生的,我本应该检查一下:
安卓应用程序使用http://ipaddress/filename.php
从服务器获取数据。当我尝试在浏览器上使用相同的url时,它返回403 forbidden
。我用www.sitename.com/filename.php
替换了url,它按预期返回了json响应。
在替换应用程序中的所有URL以匹配www.sitename.com/filename.php
而不是http://ipaddress/filename.php
之后,它开始正确地获取数据。
出于某种原因,当我在android应用程序中使用http://sitename.com/filename.php
时,它也返回了index.html。我不得不用www.
替换所有http://
才能使其工作。
感谢SteAp的帮助!