2013-08-19 97 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的帮助!

相关问题