ОШИБКА регистрации: значение br типа java.lang.string не может быть преобразовано в jsonobject - PullRequest
0 голосов
/ 08 ноября 2019

Я начинаю сборку простой Регистрация с использованием Android Studio 3.5

org.json.jsonexception Значение br типа java.lang.string не может быть преобразовано в jsonobject

Здесьмой Activity_Register

register.php

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

//Get the input request parameters
$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array


//Check for Mandatory parameters
if(isset($input['password']) && isset($input['full_name']) && isset($input['email']) && isset($input['phone'])){

    $password = $input['password'];
    $fullName = $input['full_name'];
    $email = $input['email'];
    $phone = $input['phone'];
    //Check if user already exist
    if(!userExists($email)){

        //Get a unique Salt
        $salt = getSalt();

        //Generate a unique password Hash
        $passwordHash = password_hash(concatPasswordWithSalt($password,$salt),PASSWORD_DEFAULT);

        //Query to register new user
        $insertQuery  = "INSERT INTO sma_users(user_email,user_fullname,user_phone,password_hash, salt) VALUES (?,?,?,?,?)";
        if($stmt = $con->prepare($insertQuery)){
            $stmt->bind_param("ssss",$email,$fullName,$phone,$passwordHash,$salt);
            $stmt->execute();
            $response["status"] = 0;
            $response["message"] = "User created";
            $stmt->close();
        }
    }
    else{
        $response["status"] = 1;
        $response["message"] = "User exists";
    }
}
else{
    $response["status"] = 2;
    $response["message"] = "Missing mandatory parameters";
}
echo json_encode($response);
?>

Activity_Register.java

public class Activity_Register extends AppCompatActivity {
 private static final String KEY_STATUS = "status";
    private static final String KEY_MESSAGE = "message";
    private static final String KEY_FULL_NAME = "full_name";
    private static final String KEY_EMAIL = "email";
    private static final String KEY_PHONE = "phone";
    private static final String KEY_PASSWORD = "password";
    private static final String KEY_EMPTY = "";
    private static final String KEY_EMPTY1 = "";
    private static final String KEY_EMPTY2= "";
    private static final String KEY_USER_ID = "user_id";

    private EditText etFullName;                //NAME
    private EditText etPassword;                //PASSWORD
    private EditText etConfirmPassword;         //CONFIRMPASSWORD
    private EditText email;                     //EMAIL
    private EditText phone;
    //STRING
    private String userid;
    private String fullName;
    private String password;
    private String confirmPassword;
    private String Email;
    private String Phone;
    private ProgressDialog pDialog;
    private String register_url = "http://10.0.2.2/testcon/register.php";
    private SessionHandler session;
    //ENDING NEW IMPLEMENTATION

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        session = new SessionHandler(getApplicationContext());
        setContentView(R.layout.activity__register);

        etFullName          = findViewById(R.id.edtUnameR);
        etPassword          = findViewById(R.id.edtPassR);
        etConfirmPassword   = findViewById(R.id.edtConfirmR);
        email               = findViewById(R.id.edtEmailR);
        phone               = findViewById(R.id.edtPhoneR);

        Button register          = findViewById(R.id.btnReg);
        //initView();
        //validator = new Validator(this);
        //validator.setValidationListener(this);

        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                password = etPassword.getText().toString().trim();
                if(password.length()<8){
                   etPassword.setError("Password cannot less than 8 character");
                   etPassword.requestFocus();
                }else{
                    password = etPassword.getText().toString().trim();
                    confirmPassword = etConfirmPassword.getText().toString().trim();
                    fullName = etFullName.getText().toString().trim();
                    Email = email.getText().toString().trim();
                    Phone = phone.getText().toString().trim();

                    if(validateInputs()){
                        registerUser();
                    }
                }
            }
        });
    }

    /**
     * Display Progress bar while registering
     */
    private void displayLoader() {
        pDialog = new ProgressDialog(Activity_Register.this);
        pDialog.setMessage("Signing Up.. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();

    }

    /**
     * Launch Dashboard Activity on Successful Sign Up
     */
    private void loadDashboard() {
        Intent i = new Intent(this, Activity_Login.class);
        startActivity(i);
        finish();

    }

    private void registerUser(){
        displayLoader();
        JSONObject request = new JSONObject();
        try {
            request.put(KEY_PASSWORD, password);
            request.put(KEY_FULL_NAME, fullName);
            request.put(KEY_USER_ID, userid);
            request.put(KEY_EMAIL, Email);
            request.put(KEY_PHONE, Phone);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        JsonObjectRequest jsArrayRequest = new JsonObjectRequest(Request.Method.POST, register_url, request, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                pDialog.dismiss();
                try {
                    if (response.getInt(KEY_STATUS) == 0) {
                        Toast.makeText(Activity_Register.this.getApplicationContext(), "Successfully registered! Please Login to Continue", Toast.LENGTH_SHORT).show();
                        Activity_Register.this.loadDashboard();
                        Activity_Register.this.finish();
                    } else if (response.getInt(KEY_STATUS) == 1) {
                        email.setError("Email Already Taken!");
                        email.requestFocus();
                    } else {
                        Toast.makeText(Activity_Register.this.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);
    }

    private boolean validateInputs() {


        if (KEY_EMPTY.equals(fullName)) {
            etFullName.setError("Name Required!");
            etFullName.requestFocus();
            return false;

        }

        if (KEY_EMPTY.equals(password)) {
            etPassword.setError("Password Required!");
            etPassword.requestFocus();
            return false;

        }

        if (KEY_EMPTY.equals(confirmPassword)) {
            etConfirmPassword.setError("Confirm Password Required!");
            etConfirmPassword.requestFocus();
            return false;
        }
        if (!password.equals(confirmPassword)) {
            etConfirmPassword.setError("Password and Confirm Password does not match");
            etConfirmPassword.requestFocus();
            return false;
        }

        if (KEY_EMPTY1.equals(Email)) {
            email.setError("Email Required!");
            email.requestFocus();
            return false;
        }

        if (KEY_EMPTY2.equals(Phone)) {
            phone.setError("Phone Number Required!");
            phone.requestFocus();
            return false;
        }

        return true;
    }
}

До этого моя регистрацияФорма работает. Но я хочу добавить еще один атрибут, который необходимо зарегистрировать, это номер телефона. Когда я изменяю код, чтобы получить телефон. Ошибка вышла. Я проверил код, но не вижу, какая строка неправильная. Когда я удаляю любой var phone в register.php, работающий отлично вставляю в базу данных. Thankyou

...