使用Android Developer、PHP和MySQL的Android应用程序给出错误:org.json.JSONException:无状态值
我是Android新手,正在尝试使用PHP和MySQL与Android Developer Studio开发一个应用程序 我的RegisterActivity文件如下所示:使用Android Developer、PHP和MySQL的Android应用程序给出错误:org.json.JSONException:无状态值,php,android,mysql,Php,Android,Mysql,我是Android新手,正在尝试使用PHP和MySQL与Android Developer Studio开发一个应用程序 我的RegisterActivity文件如下所示: package com.mobiapp.hospmgmt; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatA
package com.mobiapp.hospmgmt;
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;
import java.util.Date;
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_ADDR1 = "addr1";
private static final String KEY_ADDR2 = "addr2";
private static final String KEY_ADDR3 = "addr3";
private static final String KEY_CITY = "city";
private static final String KEY_PIN = "pin";
private static final String KEY_STATE = "state";
private static final String KEY_COUNTRY = "country";
private static final String KEY_EMAIL = "email";
private static final String KEY_PHONE = "phone";
private static final String KEY_MOBILE = "mobile";
private static final String KEY_USERTYPE = "usertype";
private static final String KEY_EMPTY = "";
private EditText etUsername;
private EditText etPassword;
private EditText etConfirmPassword;
private EditText etFullName;
private EditText etAddr1;
private EditText etAddr2;
private EditText etAddr3;
private EditText etCity;
private EditText etPin;
private EditText etState;
private EditText etCountry;
private EditText etEmail;
private EditText etPhone;
private EditText etMobile;
private EditText etUsertype;
private String username;
private String password;
private String confirmPassword;
private String fullName;
private String addr1;
private String addr2;
private String addr3;
private String city;
private String pin;
private String ustate;
private String country;
private String email;
private String phone;
private String mobile;
private String usertype;
private ProgressDialog pDialog;
private String register_url = "http://192.168.42.252:80/hospmgmt/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);
etAddr1 = findViewById(R.id.etAddr1);
etAddr2 = findViewById(R.id.etAddr2);
etAddr3 = findViewById(R.id.etAddr3);
etCity = findViewById(R.id.etCity);
etPin = findViewById(R.id.etPin);
etState = findViewById(R.id.etState);
etCountry = findViewById(R.id.etCountry);
etEmail = findViewById(R.id.etEmail);
etPhone = findViewById(R.id.etPhone);
etMobile = findViewById(R.id.etMobile);
etUsertype = findViewById(R.id.etUsertype);
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, MainActivity.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();
addr1 = etAddr1.getText().toString().trim();
addr2 = etAddr2.getText().toString().trim();
addr3 = etAddr3.getText().toString().trim();
city = etCity.getText().toString().trim();
ustate = etState.getText().toString().trim();
pin = etPin.getText().toString().trim();
country = etCountry.getText().toString().trim();
email = etEmail.getText().toString().trim();
phone = etPhone.getText().toString().trim();
mobile = etMobile.getText().toString().trim();
usertype = etUsertype.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);
request.put(KEY_ADDR1, addr1);
request.put(KEY_ADDR2, addr2);
request.put(KEY_ADDR3, addr3);
request.put(KEY_CITY, city);
request.put(KEY_STATE, ustate);
request.put(KEY_PIN, pin);
request.put(KEY_COUNTRY,country);
request.put(KEY_EMAIL, email);
request.put(KEY_PHONE, phone);
request.put(KEY_MOBILE, mobile);
request.put(KEY_USERTYPE,usertype);
} 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 {
//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();
//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
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$response = array();
require("db/db_connect.php");
require("userfunctions.php");
//Get the input request parameters
$inputJSON = file_get_contents('php://input');
echo $inputJSON;
$input = json_decode($inputJSON, TRUE); //convert JSON into array
echo $input;
var_dump($inputJSON);
var_dump($input);
//Check for Mandatory parameters
if(isset($input['username']) && isset($input['password']) && isset($input['full_name'])){
$userid = 0;
$username = $input['username'];
$password = $input['password'];
$fullName = $input['full_name'];
$datecreated = date("d/m/Y");
$addr1 = $input['addr1'];
$addr2 = $input['addr2'];
$addr3 = $input['addr3'];
$city = $input['city'];
$pin = $input['pin'];
$state = $input['state'];
$country = $input['country'];
$email = $input['email'];
$phone = $input['phone'];
$mobile = $input['mobile'];
$usertype = $input['usertype'];
//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(user_id, user_name, user_fullname, user_passwordhash, user_passwordsalt, user_datecreated, user_addr1, user_addr2, user_addr3, user_city, user_pin, user_state, user_country, user_email, user_phone, user_mobile, user_type) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
if($stmt = $con->prepare($insertQuery)){
$stmt->bind_param("issssssssssssssss", $userid, $username,$fullName,$passwordHash,$salt, $datecreated, $addr1, $addr2, $addr3, $city, $pin, $state, $country, $email, $phone, $mobile, $usertype);
$stmt->execute();
$response["status"] = 0;
$response["message"] = "User created";
error_log("$response set - 1");
$stmt->close();
}
else{
$response["status"] = 9;
$response["message"] = "Error preparing INSERT query for database table USER";
error_log("$response set - 2");
}
}
else{
$response["status"] = 1;
$response["message"] = "User exists";
error_log("$response set - 3");
}
}
else{
$response["status"] = 2;
$response["message"] = "Missing mandatory parameters";
error_log("$response set - 4");
}
error_log(var_dump($response));
echo json_encode($response);
?>
package com.mobiapp.hospmgmt;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.JsonObjectRequest;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.Date;
公共类注册活动扩展了AppCompatActivity{
私有静态最终字符串密钥\u STATUS=“STATUS”;
私有静态最终字符串键\u MESSAGE=“MESSAGE”;
私有静态最终字符串键\u FULL\u NAME=“FULL\u NAME”;
私有静态最终字符串密钥\u USERNAME=“USERNAME”;
私有静态最终字符串密钥\u PASSWORD=“PASSWORD”;
私有静态最终字符串键\u ADDR1=“ADDR1”;
私有静态最终字符串键\u ADDR2=“ADDR2”;
私有静态最终字符串键\u ADDR3=“ADDR3”;
私有静态最终字符串KEY_CITY=“CITY”;
私有静态最终字符串键\u PIN=“PIN”;
私有静态最终字符串KEY_STATE=“STATE”;
私有静态最终字符串密钥\u COUNTRY=“COUNTRY”;
私有静态最终字符串密钥\u EMAIL=“EMAIL”;
专用静态最终字符串键\u PHONE=“PHONE”;
私有静态最终字符串密钥\u MOBILE=“MOBILE”;
私有静态最终字符串键\u USERTYPE=“USERTYPE”;
私有静态最终字符串密钥_EMPTY=“”;
私有编辑文本和用户名;
私人编辑文本和密码;
私有EditText etConfirmPassword;
私有编辑文本etFullName;
私有编辑文本etAddr1;
私有编辑文本etAddr2;
私有编辑文本etAddr3;
私人城市;
私人编辑文本etPin;
国家私人编辑部;
国家私人编辑部;
私人编辑邮件;
私人编辑文本电话;
私人编辑文本和手机;
私有EditText etUsertype;
私有字符串用户名;
私有字符串密码;
私有字符串确认密码;
私有字符串全名;
私有字符串addr1;
私有字符串addr2;
私有字符串addr3;
私人城市;
私有字符串pin;
私有字符串ustate;
私人国家;
私人字符串电子邮件;
私人电话;
私有字符串移动;
私有字符串用户类型;
私人对话;
专用字符串寄存器\u url=”http://192.168.42.252:80/hospmgmt/register.php";
私有会话处理程序会话;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
session=newsessionhandler(getApplicationContext());
setContentView(R.layout.activity\u寄存器);
etUsername=findviewbyd(R.id.etUsername);
etPassword=findviewbyd(R.id.etPassword);
etConfirmPassword=findviewbyd(R.id.etConfirmPassword);
etFullName=findviewbyd(R.id.etFullName);
etAddr1=findViewById(R.id.etAddr1);
etAddr2=findviewbyd(R.id.etAddr2);
etAddr3=findviewbyd(R.id.etAddr3);
etCity=findviewbyd(R.id.etCity);
etPin=findviewbyd(R.id.etPin);
etState=findviewbyd(R.id.etState);
etCountry=findviewbyd(R.id.etCountry);
etEmail=findviewbyd(R.id.etEmail);
etPhone=findviewbyd(R.id.etPhone);
etMobile=findviewbyd(R.id.etMobile);
etUsertype=findviewbyd(R.id.etUsertype);
按钮登录=findViewById(R.id.btnRegisterLogin);
按钮寄存器=findViewById(R.id.btnRegister);
//单击登录按钮时启动登录屏幕
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图i=新意图(RegisterActivity.this,MainActivity.class);
星触觉(i);
完成();
}
});
register.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//检索编辑文本中输入的数据
username=etUsername.getText().toString().toLowerCase().trim();
password=etPassword.getText().toString().trim();
confirmPassword=etConfirmPassword.getText().toString().trim();
fullName=etFullName.getText().toString().trim();
addr1=etAddr1.getText().toString().trim();
addr2=etAddr2.getText().toString().trim();
addr3=etAddr3.getText().toString().trim();
city=etCity.getText().toString().trim();
ustate=etState.getText().toString().trim();
pin=etPin.getText().toString().trim();
country=etCountry.getText().toString().trim();
email=etEmail.getText().toString().trim();
phone=etPhone.getText().toString().trim();
mobile=etMobile.getText().toString().trim();
usertype=etUsertype.getText().toString().trim();
如果(validateInputs()){
registerUser();
}
}
});
}
/**
*注册时显示进度条
*/
私有void displayLoader(){
pDialog=newprogressdialog(RegisterActivity.this);
pDialog.setMessage(“正在注册..请稍候…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
/**
*成功注册后启动仪表板活动
*/
私有void loadDashboard(){
意图
StringRequest sr = new StringRequest(Request.Method.POST, "url", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("response", response);
try {
JSONObject object = new JSONObject(response);
String status = object.getString("status");
if (status.equals("0"){
//do something
}
} catch (JSONException e) {
progressDialog.dismiss();
Toast.makeText(OtpVerfication.this, "Please check network connection" + e, Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
VolleyLog.d("Daily_bonus", "Error " + error.getMessage());
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
Toast.makeText(OtpVerfication.this, "Seems your internet connection is slow, please try in sometime. ",
Toast.LENGTH_LONG).show();
} else if (error instanceof AuthFailureError) {
Toast.makeText(OtpVerfication.this, " Authentication error occurred, please try again later",
Toast.LENGTH_LONG).show();
} else if (error instanceof ServerError) {
Toast.makeText(OtpVerfication.this, " Server error occurred, please try again later",
Toast.LENGTH_LONG).show();
} else if (error instanceof NetworkError) {
Toast.makeText(OtpVerfication.this, " Network error occurred, please try again later",
Toast.LENGTH_LONG).show();
} else if (error instanceof ParseError) {
Toast.makeText(OtpVerfication.this, " An error occurred, please try again later",
Toast.LENGTH_LONG).show();
}
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("name", "abc");//passing parameters
return params;
}
};
sr.setRetryPolicy(new DefaultRetryPolicy(20000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(sr);
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$response = array();
require("db/db_connect.php");
require("userfunctions.php");
$input= $_POST;
//Check for Mandatory parameters
if(isset($input['username']) && isset($input['password']) && isset($input['full_name'])){
$userid = 0;
$username = $input['username'];
$password = $input['password'];
$fullName = $input['full_name'];
$datecreated = date("d/m/Y");
$addr1 = $input['addr1'];
$addr2 = $input['addr2'];
$addr3 = $input['addr3'];
$city = $input['city'];
$pin = $input['pin'];
$state = $input['state'];
$country = $input['country'];
$email = $input['email'];
$phone = $input['phone'];
$mobile = $input['mobile'];
$usertype = $input['usertype'];
//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(user_id, user_name, user_fullname, user_passwordhash, user_passwordsalt, user_datecreated, user_addr1, user_addr2, user_addr3, user_city, user_pin, user_state, user_country, user_email, user_phone, user_mobile, user_type) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
if($stmt = $con->prepare($insertQuery)){
$stmt->bind_param("issssssssssssssss", $userid, $username,$fullName,$passwordHash,$salt, $datecreated, $addr1, $addr2, $addr3, $city, $pin, $state, $country, $email, $phone, $mobile, $usertype);
$stmt->execute();
$response["status"] = 0;
$response["message"] = "User created";
error_log("$response set - 1");
$stmt->close();
}
else{
$response["status"] = 9;
$response["message"] = "Error preparing INSERT query for database table USER";
//error_log("$response set - 2");
}
}
else{
$response["status"] = 1;
$response["message"] = "User exists";
//error_log("$response set - 3");
}
}
else{
$response["status"] = 2;
$response["message"] = "Missing mandatory parameters";
//error_log("$response set - 4");
}
//error_log(var_dump($response));
echo $response;
?>