JSON通知android中的无效登录详细信息


JSON notify invalid login details in android

我有一个运行良好的登录代码,现在我需要包含一段代码片段,如果用户提供了无效的登录详细信息,该代码片段将向用户致敬。

请帮助我修改下面的代码(从互联网上的其他教程中找到),以便在用户提供无效登录详细信息时通知用户。

protected void onPostExecute(String s) {
    String err=null;
    try {
        JSONObject root = new JSONObject(s);
        JSONObject user_data = root.getJSONObject("user_data");
        NAME = user_data.getString("name");
        PASSWORD = user_data.getString("password");
        EMAIL = user_data.getString("email");
        if(NAME == ""){
            Toast.makeText(getApplicationContext(),
                    "Invlaid Login Details", Toast.LENGTH_LONG).show();
        }
    } catch (JSONException e) {
        e.printStackTrace();
        err = "Exception: "+e.getMessage();
    }
    Intent i = new Intent(ctx, Home.class);
    i.putExtra("name", NAME);
    i.putExtra("password", PASSWORD);
    i.putExtra("email", EMAIL);
    i.putExtra("err", err);
    startActivity(i);
}

这是我登录的php文件

require 'connection.php';
try{
    $username = filter_input(INPUT_POST, 'name');
    $pssword =  filter_input(INPUT_POST, 'password');
    if($username == "" )
    {
        $results = "Invalid Entry";
        echo json_encode(array("user_data"=>$results));
    }
    else
    {
        $stmt = $db->prepare('SELECT * '
                        . 'FROM users1 '
                        . 'WHERE name = :uname AND password = :password ');
        $stmt->bindParam(':uname', $username);
        $stmt->bindParam(':password', $pssword);
        $stmt->execute();
        $results = $stmt->fetch(PDO::FETCH_ASSOC);
        if($results > 0 ){
            $response = array();
            echo json_encode(array("user_data"=>$results));
        } else{
            $results = "No Record Found";           
            $results["success"] = 0;
            $results["message"] = "No Record Found";
             die(json_encode($results));
        }
        }
    }catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
    }
$stmt = NULL;
$results = NULL;
exit();
//}

您不能使用

Name ==  "" 

你必须使用

"".equals(Name)

用于比较两个String。

==运算符将比较地址值,并且"没有相同的Name地址,因此您永远无法显示您的toast

使用NAME.isEmpty()检查空字符串

您的问题出现在Android应用程序中。别担心,我以前也做过,所以你不是第一个做的;)

要验证该字段是否为空,需要使用name.isEmpty()name.equals("")。请记住,Android是一个基于Java的程序,与.NET.不同

原因是从web服务返回的JSON repsonse是一个对象而不是字符串,因此它将忽略以下代码:name == ""

希望这有帮助:)