我试图在Android中实现一个登录按钮,该按钮使用Volley通过php连接到mysql服务器。
我在哪里弄错了?
该按钮的代码是
LogIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, login_user, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray myData = response.getJSONArray("myData");
Toast.makeText(LoginActivity.this, "JSoN ARRAY SIZE "+myData.length(), Toast.LENGTH_SHORT).show();
if (myData.length() > 1)
Toast.makeText(LoginActivity.this, "THIS ISNT SUPPOSED TO HAPPEN", Toast.LENGTH_SHORT).show();
JSONObject dataObject = myData.getJSONObject(0);
Users user=new Users();
user.setId(dataObject.getInt("user_id"));
user.setUserName(dataObject.getString("user_name"));
user.setPassword(dataObject.getString("password"));
user.setEmail(dataObject.getString("email"));
user.setBirthday(dataObject.getString("birthday"));
user.setIs_Admin(dataObject.getBoolean("is_admin"));
db.InsertUser(user);//adds the user into a sqllite db
Toast.makeText(LoginActivity.this, "Welcome "+user.getUserName(), Toast.LENGTH_LONG).show();
Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(LoginActivity.this, "Json eror::---"+e, Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this, "Volley-error:"+error, Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("USERNAME", UserName.getText().toString());
parameters.put("PASSWORD", Password.getText().toString());
return parameters;
}
};
requestQueue.add(jsonObjectRequest);
}
});
php代码:
<?php
include_once("connection.php");
if (isset($_POST['USERNAME']) && isset($_POST['PASSWORD'])) {
$username = $_POST['USERNAME'];
$password = $_POST['PASSWORD'];
$query = "SELECT * FROM `users` WHERE user_name='$username' AND password="$password"";
$result = mysqli_query($conn, $query);
$number_of_rows = mysqli_num_rows($result);
$temp_array = array();
if ($number_of_rows > 0) {
while($row = mysqli_fetch_assoc($result)){
$temp_array[] = $row;
}
}
header('Content-Type: application/json');
echo json_encode(array("myData"=>$temp_array));
mysqli_close($conn);
?>
最佳答案
能否请您添加从php端收到的Json机会,因为它们将被括在方括号[]中而不是Curley括号{}中
关于java - Volley的JsonObjectRequest给出“org.json.JSONException:值<br类型java.lang.String的值不能转换为JSONObject”异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49677382/