运行应用程序时无法将字符串转换为JSONObject错误

时间:2018-09-26 12:16:54

标签: java php android mysql

我尝试了所有在以前的类似文章中可以找到的内容,但没有帮助。我收到错误消息:“ I / System.out:错误:org.json.JSONException:类型java.lang.String的值br不能转换为JSONObject”

Java代码:

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import 
com.android.volley.toolbox.JsonObjectRequest;

import org.json.JSONException;
import org.json.JSONObject;

public class RegisterActivity 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_USERNAME = "username";
private static final String KEY_PASSWORD = "password";
private static final String KEY_EMPTY = "";
private EditText etUsername;
private EditText etPassword;
private EditText etConfirmPassword;
private EditText etFullName;
private String username;
private String password;
private String confirmPassword;
private String fullName;
private ProgressDialog pDialog;
private String register_url = "http://10.0.2.2/user102/register.php";
private SessionHandler session;

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

    etUsername = findViewById(R.id.etUsername);
    etPassword = findViewById(R.id.etPassword);
    etConfirmPassword = findViewById(R.id.etConfirmPassword);
    etFullName = findViewById(R.id.etFullName);

    Button login = findViewById(R.id.btnRegisterLogin);
    Button register = findViewById(R.id.btnRegister);

    //Launch Login screen when Login Button is clicked
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(RegisterActivity.this, Login.class);
            startActivity(i);
            finish();
        }
    });

    register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Retrieve the data entered in the edit texts
            username = etUsername.getText().toString().toLowerCase().trim();
            password = etPassword.getText().toString().trim();
            confirmPassword = etConfirmPassword.getText().toString().trim();
            fullName = etFullName.getText().toString().trim();
            if (validateInputs()) {
                registerUser();
            }

        }
    });

}

/**
 * Display Progress bar while registering
 */
private void displayLoader() {
    pDialog = new ProgressDialog(RegisterActivity.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(getApplicationContext(), DashboardActivity.class);
    startActivity(i);
    finish();

}

private void registerUser() {
    displayLoader();
    JSONObject request = new JSONObject();
    try {
        //Populate the request parameters
        request.put(KEY_USERNAME, username);
        request.put(KEY_PASSWORD, password);
        request.put(KEY_FULL_NAME, fullName);

    } catch (JSONException e) {
        e.printStackTrace();
    }
    System.out.println("JSON= "+ request.toString());
    JsonObjectRequest jsArrayRequest = new JsonObjectRequest
            (Request.Method.POST, register_url, request, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    pDialog.dismiss();
                    try {
                        //Check if user got registered successfully
                        if (response.getInt(KEY_STATUS) == 0) {
                            //Set the user session
                            session.loginUser(username,fullName);
                            loadDashboard();

                        }else if(response.getInt(KEY_STATUS) == 1){
                            //Display error message if username is already existsing
                            etUsername.setError("Username already taken!");
                            etUsername.requestFocus();

                        }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();
                    System.out.println("Error: "+error.getMessage());
                    //Display error message whenever an error occurs
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();

                }
            });

    // Access the RequestQueue through your singleton class.
    MySingleton.getInstance(this).addToRequestQueue(jsArrayRequest);
}

/**
 * Validates inputs and shows error if any
 * @return
 */
private boolean validateInputs() {
    if (KEY_EMPTY.equals(fullName)) {
        etFullName.setError("Full Name cannot be empty");
        etFullName.requestFocus();
        return false;

    }
    if (KEY_EMPTY.equals(username)) {
        etUsername.setError("Username cannot be empty");
        etUsername.requestFocus();
        return false;
    }
    if (KEY_EMPTY.equals(password)) {
        etPassword.setError("Password cannot be empty");
        etPassword.requestFocus();
        return false;
    }

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

    return true;
}

Php代码:

<?php
$response = array();
include 'db/db_connect.php';
include 'db/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['username']) && 
isset($input['password']) && 
isset($input['full_name'])){
$username = $input['username'];
$password = $input['password'];
$fullName = $input['full_name'];

//Check if user already exist
if(!userExists($username)){

    //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 user_data(username, full_name, password_hash, salt) VALUES (?,?,?,?)";
    if($stmt = $con->prepare($insertQuery)){
        $stmt->bind_param("ssss",$username,$fullName,$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);
?>

register_url字符串不能转换吗?我对此很陌生。谢谢

1 个答案:

答案 0 :(得分:0)

  

尝试这样

SUM
(
  CASE
    WHEN l16lcode IN ('4')
      AND l16movef IN ('7') 
      AND (SUBSTR(routeno, 1,4) IN ('LSEA','LTEM','LVAN','LOSD','LBFR','LAVE') OR
           SUBSTR(routeno, 1,5) IN ('LAFUL')
          )
    THEN 1 ELSE 0
  END
)