Php JSONException:Value<;br无法转换为JSONobject
我正在使用带有MySQL数据库的xampp服务器创建一个简单的登录页面。我不断得到上面的错误,不幸的是,找不到正确的答案。我用的是我真正的android手机,而不是模拟器。日志框似乎没有显示任何类型的错误,因此我不确定出了什么问题。提前谢谢 LoginActivity.javaPhp 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
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);