从Android连接到PHP和MySQL

时间:2012-11-18 16:14:04

标签: php android mysql

我想从我的Android应用程序连接到数据库,并找到了一个教程(link to tutorial)。

当我在模拟器中使用它时它工作正常,但是当我尝试在手机上使用它时却没有。我尝试过使用WAMP服务器,我有端口转发它,我尝试使用真正的Web主机(000webhost)。从模拟器到手机的唯一区别是URL,我必须提供公共IP地址而不是10.0.2.2。我也尝试过托管WAMP服务器的计算机的本地IP。我知道有些webhosts会在代码中添加广告,但我很确定WAMP不这样做。

当我使用手机时,我从LogCat收到以下错误:

Error parsing data org.json.JSONException: Value <html> of type java.lang.String cannot be converted to JSONObject

更新1:

我尝试过使用cURL检查返回的内容。它返回很多(标题,bgcolor等),但我认为这很有趣:

Access denied for user 'root'@'localhost' (using password: NO) in C:\wamp\www\android_connect\db_connect.php on line <i>28</i></th></tr>

好像它无法访问数据库,但我可能错了?

当我使用cURL访问localhost时,它会返回数据库中的正确项目,而不是所有html代码作为具有公共IP的服务器。

更新2:

我解决了公共WAMP服务器的问题。我是个菜鸟,忘了我用密码设置了服务器。

但是当我从浏览器使用webhost(000webhost)时,我仍然会收到此错误:

PHP Error Message

Warning: require_once(__DIR__/db_connect.php) [function.require-once]: failed to open stream: No such file or directory in /home/a7471305/public_html/android_connect/get_all_products.php on line 12

Free Web Hosting

PHP Error Message

Fatal error: require_once() [function.require]: Failed opening required '__DIR__/db_connect.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/a7471305/public_html/android_connect/get_all_products.php on line 12

Free Web Hosting

我从cURL得到了这个错误:

<b>Fatal error</b>:  require_once() [<a href='function.require'>function.require
</a>]: Failed opening required '__DIR__/db_connect.php' (include_path='.:/usr/li
b/php:/usr/local/lib/php') in <b>/home/a7471305/public_html/android_connect/get_
all_products.php</b> on line <b>12</b><br />

如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

您看到的URI看起来像是返回HTML文档而不是JSON。导航到Web浏览器中的URI或使用CURL查看返回的内容。

正如其他几位提到的那样,PHP可能显示错误,或者您可能收到Web服务器错误(à404或500)。

一些免费的网络主机将广告注入HTML响应,这可能会导致调试和生产之间的差异。您可能希望将Response-Type标头设置为application / json,这可能会避免任何干扰。

例如:

// This must go before any output has started, I.E. at the 
// beginning of the first loaded document
header('Content-type: application/json');

答案 1 :(得分:1)

我找到了解决方案。感谢所有帮助过我的人。

webhost无法找到该文件,因为我正在使用

require_once( __DIR__ . '/db_connect.php');

在同一文件夹中查找下一个php文件。 相反,我应该使用:

define('__ROOT__', dirname(dirname(__FILE__))); 
require_once(__ROOT__.'/android_connect/db_connect.php'); 

答案 2 :(得分:0)

如果您在模拟器中有工作环境,请尝试使用WLAN上的手机。然后,您之间没有其他步骤/服务器,这可能会扭曲您的服务器响应。

答案 3 :(得分:0)

检查此链接。它用于登录页面。但如果useranme和密码退出MySQL,它使用php和MySql登录用户。当你运行这段代码并阅读它时,你可以自己编写代码来完成php和mySQL的其他工作。它是经过测试的代码。它也适用于Android设备。

How to validate the user login credentials in android using PHP, MySql with the help of json