我试图通过简单的PHP代码访问数据库。但是限制因素是它是一个远程数据库,由远程服务器从真实设备访问。
这是代码的片段: -
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("username", un.getText().toString()));
postParameters.add(new BasicNameValuePair("password", pw.getText().toString()));
String response = null;
try {
response = CustomHttpClient.executeHttpPost("http://WebsiteName.com/check.php", postParameters);
String res=response.toString();
res= res.replaceAll("\\s+","");
if(res.equals("1"))
error.setText("Correct Username or Password");
else
error.setText("Sorry!! Incorrect Username or Password");
} catch (Exception e) {
un.setText(e.toString());
}
PHP是here。很可能PHP代码没有问题,因为它在本地工作。
我想澄清的最重要的事情之一是将PHP代码保存在服务器中的位置。我直接在根目录下。当我从浏览器执行它时(例如输入website.com/check.php),我得到了所需的响应。 不幸的是,许多给出了相关教程的人提到了本地服务器和本地数据库而不是远程服务器。有没有更多的东西可以用真正的设备完成它?
PS:当使用本地网络服务器连接到模拟器和本地数据库时,该应用程序正常工作。
=== UPDATE ===
我很确定手机没有联系网络服务器。我通过使网络服务器始终给出积极响应进行验证,但也失败了。我应该注意哪些提示?除了在线服务器之外我什么也想不到......哪个有效(从浏览器检查时)。有什么方法交叉检查吗?感谢。
答案 0 :(得分:3)
这可能是您可能遇到的问题的原因,也可能不是,但您必须以任何方式解决。
您当前正在同步发出POST请求。这意味着,只要POST请求正在执行且设备正在等待响应,手机和UI就会被锁定。这不仅会造成糟糕的用户体验,如果您将UI线程锁定超过一定时间,Android会认为该应用程序已崩溃。
也许这就是为什么它在本地发出请求时有效,因为对本地网络服务器的POST请求将非常快,而不是远程网络服务器。
要异步发出HTTP请求,请查看Android AsyncTask