0

我正在尝试通过简单的 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 在这里。PHP 代码很可能没有问题,因为它可以在本地工作。

我要澄清的最重要的事情之一是 PHP 代码在服务器中的保存位置。我直接在根目录下。当我从浏览器执行它时(比如输入 website.com/check.php),我得到了所需的响应。不幸的是,许多对此提供教程的人提到本地服务器和本地数据库比远程数据库更多。为了用真实设备完成它,我还应该做些什么吗?

PS:当使用本地网络服务器连接到模拟器和本地数据库时,该应用程序可以正常工作。

===更新===

我很确定电话没有联系网络服务器。我通过让网络服务器始终给出肯定响应来验证,这也失败了。关于我应该在哪里看的任何提示?除了在线服务器之外,我想不出其他任何东西......它正在工作(从浏览器检查时)。有什么交叉检查的方法吗?谢谢。

4

1 回答 1

3

这可能是也可能不是您所面临问题的原因,但您必须以任何一种方式解决它。

您当前正在同步发出 POST 请求。这意味着,只要 POST 请求正在执行并且设备正在等待响应,手机和 UI 就会被锁定。这不仅会导致糟糕的用户体验,而且如果您将 UI 线程锁定超过一定时间,Android 会认为应用程序已崩溃。

也许这就是当您在本地发出请求时它起作用的原因,因为与远程 Web 服务器相比,对本地 Web 服务器的 POST 请求将非常快。

要异步发出 HTTP 请求,请查看 Android AsyncTask

于 2012-05-27T21:36:26.887 回答