Jsonexception: значение Failed типа Java.lang.String не может быть преобразовано в JSONObject

Я сделал систему входа с помощью php, раньше для приложения Android это работало, но теперь я немного изменил базу данных, вместо полного имени я изменил имя на имя и фамилию, я добавил имя пользователя, страну, точки и парент-адрес. Я также изменил код php для новой структуры моей таблицы, и когда я запускаю его из своего приложения, он дает мне эту ошибку JSONException: значение типа java.lang: String не может быть преобразовано в JSONObject, я смотрю консоль отладки, но Я не смог найти проблему. Не могли бы вы мне немного помочь, я делаю это для школьного проекта.

<?php
$response = array();
include 'db/db_connect.php';


$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE);


if (isset($input['email']) && isset($input['password'])){
    $email = $input['email'];
    $password = $input['password'];
    $query    = "SELECT username,password, firstname,lastname,country,parentEmail,points FROM users WHERE email = ?";

    if ($stmt = $con->prepare($query)){
        $stmt->bind_param("s",$email);
        $stmt->execute();
        $stmt->bind_result($username,$passwordHashDB,$firstname, $lastname,$country,$parentEmail,$points);
        if ($stmt->fetch()){

            if (password_verify($password,$passwordHashDB)){
                $response["status"] = 0;
                $response["message"] = "Login successful";
                $response["first_name"] = $firstname;
            }
            else{
                $response["status"] = 1;
                $response["message"] = "Invalid Email and password combination";
            }
        }
        else{
            $response["status"] = 1;
            $response["message"] = "Invalid Email and password combination";
        }

        $stmt->close();
    }
}
else{
    $response["status"] = 2;
    $response["message"] = "Missing mandatory parameters";
}

echo json_encode($response);
?>

это логин php с моего сайта

private void login() {
        displayLoader();
        JSONObject request = new JSONObject();
        try {

            request.put(KEY_EMAIL, email);
            request.put(KEY_PASSWORD, password);

        } catch (JSONException e) {
            e.printStackTrace();
        }
        JsonObjectRequest jsArrayRequest = new JsonObjectRequest
                (Request.Method.POST, login_url, request, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        pDialog.dismiss();
                        try {


                            if (response.getInt(KEY_STATUS) == 0) {
                                session.loginUser(email, response.getString(KEY_FIRST_NAME));
                                loadDashboard();

                            } else {
                                Toast.makeText(getApplicationContext(),
                                        response.getString(KEY_MESSAGE), Toast.LENGTH_SHORT).show();

                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        pDialog.dismiss();


                        Toast.makeText(getApplicationContext(),
                                error.getMessage(), Toast.LENGTH_SHORT).show();

                    }
                });


        MySingleton.getInstance(this).addToRequestQueue(jsArrayRequest);
    }

Не могли бы вы поделиться полной трассировкой стека для «JSONException: значение типа java.lang: String не может быть преобразовано в JSONObject» на Android?

Seungmin Ha 01.12.2018 01:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
48
1

Ответы 1

  StringRequest stringRequest = new StringRequest(Request.Method.POST, uri, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            VolleyLog.wtf(response);
            Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
             try {
                     if (response.getInt(KEY_STATUS) == 0) {
                            session.loginUser(email, response.getString(KEY_FIRST_NAME));
                            loadDashboard();

                        } else {
                            Toast.makeText(getApplicationContext(),
                                    response.getString(KEY_MESSAGE), Toast.LENGTH_SHORT).show();

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

        }
    }, errorListener) {
        @Override
        public Priority getPriority() {
            return Priority.LOW;
        }

        @Override
        public Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();

            params.put(KEY_EMAIL, email);
            params.put(KEY_PASSWORD, password);


            return params;
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
            return headers;
        }

    };
MySingleton.getInstance(this).addToRequestQueue(stringRequest);
}

Всегда лучше делать StringRequests как в строке, а затем передавать их в jsonobject. С Уважением!

У меня есть ошибки в getInt (KEY_STATUS) == 0, в getString, errorListener

corner12 01.12.2018 01:32

Проверяли в журнале, появляется ли запрос?

DGLeiva 01.12.2018 01:33

Я имею в виду, он не работает, не распознает те

corner12 01.12.2018 01:35

Другие вопросы по теме