2017-01-29 3 views
0

Я пытаюсь получить номер чан из моей базы данных для отображения, когда пользователь входит в это работает нормально, а потом вдруг перестал работать и начал возвращать ошибку:.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); 
?> 
+0

Вы храните пароли в текстовом виде. 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

+0

Вы вошли в код, чтобы убедиться, что результат все еще возвращается? Вы могли бы поставить часы на jsonResponse, чтобы увидеть, что внутри него. Иногда API меняется или идет вниз или ваше сетевое соединение прерывается. – SingularityFuture

ответ

1

даже я столкнулся с той же проблемой. Попробуйте синхронизировать град, щелкните по значку. Затем град завершит строительство, позже вы сможете мгновенно запустить свое приложение.

+0

Спасибо, но до сих пор нет радости. –

+0

не работает! – Shivraj

+0

Это не сработало, нет. Я все еще пытаюсь понять, что пошло не так. –

Смежные вопросы