Я пытаюсь получить номер чан из моей базы данных для отображения, когда пользователь входит в это работает нормально, а потом вдруг перестал работать и начал возвращать ошибку:.JSONObject возвращается нуль
org.json.JSONException: Value null at vat of type org.json.JSONObject$1 cannot be converted to int
и я не уверен, почему. Любая помощь будет принята с благодарностью.
Вот код:
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success =jsonResponse.getBoolean("success");
if (success) {
int vat = jsonResponse.getInt("vat");
Intent intent = new Intent(LoginActivity.this, ChoiceSelectActivity.class);
intent.putExtra("username", username);
intent.putExtra("vat", vat);
LoginActivity.this.startActivity(intent);
}else{
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage ("Login Failed")
.setNegativeButton("Retry", null)
.create()
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(username, password, responseListener);
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
}
А вот PHP файл:
{<?php
$con = mysqli_connect("xxx.com", "xxx", "xxx", "xxx");
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "SELECT * FROM Name WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $username, $password, $vat);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["username"] = $username;
$response["password"] = $password;
$response["vat"] = $vat;
}
echo json_encode($response);
?>
Вы храните пароли в текстовом виде. PHP предоставляет ['password_hash()'] (http://php.net/manual/en/function.password-hash.php) и ['password_verify()'] (http://php.net/manual/ ru/function.password-verify.php), пожалуйста, используйте их. И вот некоторые [хорошие идеи о паролях] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) Если вы используете версию PHP до 5.5 [имеется пакет совместимости, доступный здесь] (https : //github.com/ircmaxell/password_compat) – RiggsFolly
Вы вошли в код, чтобы убедиться, что результат все еще возвращается? Вы могли бы поставить часы на jsonResponse, чтобы увидеть, что внутри него. Иногда API меняется или идет вниз или ваше сетевое соединение прерывается. – SingularityFuture