【问题标题】:Why does PHP script returns empty string to android on server?为什么 PHP 脚本在服务器上向 android 返回空字符串?
【发布时间】:2020-04-26 21:05:01
【问题描述】:

我制作了一个带有 PHP 后端的 android 应用程序,它可以在 localhost 上正常工作。 但是,当我将它上传到服务器上时,它会返回一个空字符串,而不是例如“ok”。我已经把所有的权限都交给了777,但它不起作用。

其中一个 PHP 脚本:

<?php  

    if($_SERVER['REQUEST_METHOD']=='POST'){
        $username = $_POST['username'];
        $password = $_POST['password'];
        require_once('dbConnect.php');
        $sql = "SELECT * FROM coachtbl WHERE kodemelli =
        '$username'
        AND password='$password'";
        $r = @mysqli_query($con,$sql);
        $num_rows = mysqli_num_rows($r);
         if($num_rows>0){
            echo ("ok");}
         else{
             echo (mysqli_error($con));
         }
        @mysqli_close($con); 
    }

 ?>

这是我的安卓代码:

 StringRequest request = new StringRequest(Request.Method.POST, Config.login_Api, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                loading.dismiss();
                Toast.makeText(LoginActivity.this, s, Toast.LENGTH_SHORT).show();
                if (s.trim().equals("ok")) {
                    //Toast.makeText(LoginActivity.this, "success", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(LoginActivity.this , MainPage.class));
                    kodemelli=kode.getText().toString().trim();
                } else {
                    Toast.makeText(LoginActivity.this, "username or password is wrong", Toast.LENGTH_SHORT).show();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(LoginActivity.this, volleyError.toString(), Toast.LENGTH_SHORT).show();
                loading.dismiss();
            }
        }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("username", kode.getText().toString().trim());
                params.put("password", pass.getText().toString().trim());
                return params;
            }

        };
        RequestQueue requestQueue =
                Volley.newRequestQueue(LoginActivity.this);
        requestQueue.add(request);

感谢您的帮助

【问题讨论】:

  • 您确定您正在从您的 android 手机发出 POST 请求吗?你能过去android代码吗?服务器上的文件可以通过互联网访问吗?
  • 是的,我很确定。我也发布了android代码
  • 您是否使用 Postman 向您的 Web 服务器发帖?结果正确吗?
  • 邮递员是什么意思??
  • 向您的页面发出 POST 请求,就像使用本网站一样。 reqbin.com

标签: java php android


【解决方案1】:

也许您的 URL Config.login_Api 设置有误。检查 URL 末尾是否缺少“/”反斜杠:例如“www.hello.com/”

另一个可能的问题是您的 PHP 网络服务器配置错误。 检查远程 Web 服务器上运行的 .htaccess 设置或缺少 PHP 守护程序。

【讨论】:

  • 我检查了它并且它是正确的,如果我输入了错误的域,我想我会遇到 com.android.Volley.ClientError 。我不会吗?
  • 需要更多信息。请完成问题。如果该 api 可公开访问,请分享链接以便我检查。
  • 如果 php 文件托管在 Apache 服务器上,也粘贴您的 htaccess 文件的内容
【解决方案2】:

POST 替换为GET

您正在执行错误的 HTTP 方法请求。

【讨论】:

  • 我试过了,但我得到了相同的结果(一个空字符串)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
相关资源
最近更新 更多