我想从我的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 />
如何解决这个问题?
答案 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