Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSONException:Value<;br无法转换为JSONobject_Php_Android_Mysql_Json - Fatal编程技术网

Php JSONException:Value<;br无法转换为JSONobject

Php JSONException:Value<;br无法转换为JSONobject,php,android,mysql,json,Php,Android,Mysql,Json,我正在使用带有MySQL数据库的xampp服务器创建一个简单的登录页面。我不断得到上面的错误,不幸的是,找不到正确的答案。我用的是我真正的android手机,而不是模拟器。日志框似乎没有显示任何类型的错误,因此我不确定出了什么问题。提前谢谢 LoginActivity.java public class LoginActivity extends AppCompatActivity { private static String LOGIN_URL = "http://192.168.43.2

我正在使用带有MySQL数据库的xampp服务器创建一个简单的登录页面。我不断得到上面的错误,不幸的是,找不到正确的答案。我用的是我真正的android手机,而不是模拟器。日志框似乎没有显示任何类型的错误,因此我不确定出了什么问题。提前谢谢

LoginActivity.java

public class LoginActivity extends AppCompatActivity {

private static String LOGIN_URL = "http://192.168.43.231/Login/login.php";
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";

@Override
protected void onCreate(Bundle savedInstanceState) {
    .....
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String usernameS = username.getText().toString().trim();
            final String passwordS = password.getText().toString().trim();

            if (usernameS.isEmpty() || passwordS.isEmpty()) {
                Toast.makeText(LoginActivity.this, "Enter Valid Username & Password", Toast.LENGTH_SHORT).show();
            } else {

                StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                try {
                                    JSONObject jsonObject = new JSONObject(response);
                                    boolean responseStatus = jsonObject.getBoolean("success");
                                    if (responseStatus) {
                                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                                        LoginActivity.this.startActivity(intent);
                                    } else {
                                        Toast.makeText(LoginActivity.this, "Invalid Username or Password", Toast.LENGTH_SHORT).show();

                                    }
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                    Toast.makeText(LoginActivity.this,"Error" + e.toString(), Toast.LENGTH_LONG).show();
                                }
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Toast.makeText(LoginActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                            }
                        }) {
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put(KEY_USERNAME, usernameS);
                        params.put(KEY_PASSWORD, passwordS);

                        return params;
                    }
                };
                RequestQueue requestQueue =Volley.newRequestQueue(LoginActivity.this);
                requestQueue.add(stringRequest);
            }
        }
    });
}
公共类LoginActivity扩展了AppCompatActivity{
私有静态字符串登录\u URL=”http://192.168.43.231/Login/login.php";
公共静态最终字符串键\u USERNAME=“USERNAME”;
公共静态最终字符串密钥\u PASSWORD=“PASSWORD”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
.....
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
最终字符串usernameS=username.getText().toString().trim();
最终字符串密码=password.getText().toString().trim();
if(usernameS.isEmpty()| | passwordS.isEmpty()){
Toast.makeText(LoginActivity.this,“输入有效用户名和密码”,Toast.LENGTH_SHORT.show();
}否则{
StringRequest StringRequest=新的StringRequest(Request.Method.POST、LOGIN\u URL、,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject JSONObject=新JSONObject(响应);
boolean responseStatus=jsonObject.getBoolean(“成功”);
if(responseStatus){
意向意向=新意向(LoginActivity.this、MainActivity.class);
后勤活动。这。开始行动(意图);
}否则{
Toast.makeText(LoginActivity.this,“无效用户名或密码”,Toast.LENGTH_SHORT.show();
}
}捕获(JSONException e){
e、 printStackTrace();
Toast.makeText(LoginActivity.this,“Error”+e.toString(),Toast.LENGTH\u LONG.show();
}
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG.show();
}
}) {
@凌驾
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
参数put(KEY_用户名、用户名);
参数put(钥匙密码、密码);
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(LoginActivity.this);
添加(stringRequest);
}
}
});
}
}

PHP代码

<?php
$con=mysqli_connect("localhost","root","","blast");

$username=$_POST['username']);
$password=$_POST['password']);

$sql=mysqli_prepare($con,"SELECT * from blast_user where username = '$username' and password = '$password'");
mysqli_stmt_bind_param($sql,"sss",$username,$password);
mysqli_stmt_execute($sql);
mysqli_stmt_store_result($sql);
mysqli_stmt_bind_result($sql,$username,$password);

$response=array();
$response["success"]=true;

echo json_encode($response);
>?
执行此操作-

$username=$_POST['usernameS']);
$password=$_POST['passwordS']);
而不是-

$username=$_POST['username']);
$password=$_POST['password']);

您是否检查过php脚本中的原始响应是什么?我猜输出中有一些php警告或通知,从而污染了应该是纯json的内容。“JSONException:Value如果这是您的实际php代码,您在
$username=$\u POST['username']);
(额外的结束参数)处有解析错误。您正在尝试使用准备好的语句,但也没有提供任何要绑定的占位符。您的SQL应该是
SELECT*from blast_user,其中username=?和password=?
。随后,您只需要在
mysqli_stmt_bind_参数($SQL,“ss”$username,$password);