java - Volley的JsonObjectRequest给出“org.json.JSONException:值<br类型java.lang.String的值不能转换为JSONObject”异常

标签 java php android mysql android-studio

我试图在Android中实现一个登录按钮,该按钮使用Volley通过php连接到mysql服务器。
我在哪里弄错了?

该按钮的代码是

LogIn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, login_user, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {

                try {

                    JSONArray myData = response.getJSONArray("myData");

                    Toast.makeText(LoginActivity.this, "JSoN ARRAY SIZE "+myData.length(), Toast.LENGTH_SHORT).show();

                    if (myData.length() > 1)
                        Toast.makeText(LoginActivity.this, "THIS ISNT SUPPOSED TO HAPPEN", Toast.LENGTH_SHORT).show();

                    JSONObject dataObject = myData.getJSONObject(0);
                    Users user=new Users();
                    user.setId(dataObject.getInt("user_id"));
                    user.setUserName(dataObject.getString("user_name"));
                    user.setPassword(dataObject.getString("password"));
                    user.setEmail(dataObject.getString("email"));
                    user.setBirthday(dataObject.getString("birthday"));
                    user.setIs_Admin(dataObject.getBoolean("is_admin"));
                    db.InsertUser(user);//adds the user into a sqllite db

                    Toast.makeText(LoginActivity.this, "Welcome "+user.getUserName(), Toast.LENGTH_LONG).show();

                    Intent intent = new Intent(context, MainActivity.class);

                    startActivity(intent);
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(LoginActivity.this, "Json eror::---"+e, Toast.LENGTH_SHORT).show();
                }
            }
        }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(LoginActivity.this, "Volley-error:"+error, Toast.LENGTH_SHORT).show();
                }

            }) {

                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> parameters = new HashMap<String, String>();
                    parameters.put("USERNAME", UserName.getText().toString());

                    parameters.put("PASSWORD", Password.getText().toString());

                    return parameters;
                }
            };
            requestQueue.add(jsonObjectRequest);
        }

    });


php代码:

<?php
    include_once("connection.php");

    if (isset($_POST['USERNAME']) && isset($_POST['PASSWORD'])) {
        $username = $_POST['USERNAME'];
        $password = $_POST['PASSWORD'];

        $query = "SELECT * FROM `users` WHERE user_name='$username' AND password="$password"";
        $result = mysqli_query($conn, $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("myData"=>$temp_array));
    mysqli_close($conn);
?>

最佳答案

能否请您添加从php端收到的Json机会,因为它们将被括在方括号[]中而不是Curley括号{}中

关于java - Volley的JsonObjectRequest给出“org.json.JSONException:值<br类型java.lang.String的值不能转换为JSONObject”异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49677382/

相关文章:

php - Doctrine 和 LIKE 查询

Android如何更改弹出菜单项背景

java - 从 httppost 响应中解析 xml

php - 如何获取两个数据库列状态(或事件)之间的时间差(以秒为单位)

java - 使用 MVC 架构填充 GUI 中的表

java - list.toString 操作后从 String 中去除括号

java - persistence.xml 文件中列出但未映射的类

php - Laravel Eloquent 模型属性

android - 如何在隐藏和查看密码之间切换

java - 如何正确读取 Flux<DataBuffer> 并将其转换为单个 inputStream