php - Android 应用程序未获得 JSON 响应

标签 php android mysql json database

编辑:20020-20020/practise.mysql_php_json I/System.out:org.json.JSONException:java.lang.String 类型的值 br 无法转换为 JSONObjectww 是我收到的终端消息。

我正在努力按照 youtube 上的教程获得一个简单的插入和检索应用程序以在 android 中工作。应该相当简单,我可以将用户信息发布到在线数据库,但是当我去检索它时,没有任何反应。没有收到任何错误,只是没有收到任何 JSON 响应。

我刚刚开始同时使用 JSON 和 php,所以我不知道我是没有得到什么还是遗漏了一些小东西。

这是我的 connection.php,我知道我的凭据是正确的,因为我可以插入。

<?php

    define('hostname', '--------');
    define('user', '---------');
    define('password', '-------');
    define('database', '------------------');

    $connect = mysqli_connect(hostname, user, password, database);

?>

这是我的insertUser.php

<?php

if($_SERVER["REQUEST_METHOD"]=="POST") {
    require 'connection.php';
    createUser();
}

function createUser() {
    global $connect;

    $name = $_POST["name"];
    $email = $_POST["email"];
    $password = $_POST["password"];

    $query = " Insert into user_table(user_name, user_email, user_password) values ('$name','$email','$password');";

    mysqli_query($connect, $query) or die (mysqli_error($connect));
    mysqli_close($connect);
}

?>

这是我的showUsers.php

<?php

if($_SERVER["REQUEST_METHOD"]=="GET"){
    include 'connection.php';
    showStudent();
}
function showStudent()
{
    global $connect;

    $query = " Select * FROM users; ";

    $result = mysqli_query($connect, $query);
    $number_of_rows = mysqli_num_rows($result);

    $temp_array  = array();

    if($number_of_rows > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
            $temp_array[] = $row;
        }
    }

    header('Content-Type: application/json');
    echo json_encode(array("users"=>$temp_array));
    mysqli_close($connect);

}

?>

现在这是我在 Main Activity 中的 Android 应用程序代码。这应该只是获取我数据库中用户的姓名、电子邮件和密码。我有另一个 onclick 方法来插入用户。

showButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        JsonObjectRequest jsonObjectRequest; = new JsonObjectRequest(Request.Method.GET, showURL, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONArray users = response.getJSONArray("users");
                    for(int i=0; i<users.length(); i++) {
                        JSONObject user = users.getJSONObject(i);
                        String name = user.getString("user_name");
                        String email = user.getString("user_email");
                        String password = user.getString("user_password");

                        results.append(name);
                    }

                    results.append("\n");

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        requestQueue.add(jsonObjectRequest);
    }
});

最佳答案

您的 PHP 脚本出现错误。第一步是打开你的错误报告,所以把下面的代码放在你打开的正下方 <?php标签:

ini_set('display_errors', 1);
error_reporting(-1);

这将向您显示错误。现在阅读评论,您的查询似乎失败了。

在尝试获取结果之前,您应该检查查询以确保它确实成功。

$query = " Select * FROM users; ";

$result = mysqli_query($connect, $query);
// this checks if query failed and prints error.
if(!$result){
    die("SQL Error: ". mysqli_error($connect));
}
// will only get here if your query runs successfully.
$number_of_rows = mysqli_num_rows($result);
///... rest of your code...

现在,让我们知道您遇到了哪些错误,以及您是否设法修复了这些错误。我会在您回复时更新此答案。

关于php - Android 应用程序未获得 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644470/

相关文章:

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

php - 通过浏览器将 YouTube 视频文件直接下载到用户计算机

php - 为什么 PHP 异常类中的所有方法都是最终的?

javascript - pdf.js 不适用于 &lt;!DOCTYPE HTML>

php - PHP-构建搜索引擎(查询多个数据库)

java - Android 上的 16 位 RAW RGB_565 图像

android - 将对象发送到另一个 fragment 后进行更改

android - 一个应用程序中有两个 google-services.json (具有不同的帐户)

html - Angular 2 格式日期时间问题

php - 可能使用 Levenshtein 距离匹配搜索词的准确性