JSON 响应不工作,不知道这个问题

JSON response Not Working, don't know the issue

在应用程序中,我需要通过输入用户名和密码来执行登录,这将在数据库中通过检查,我已经通过不使用 JSON 仅通过检查给定的响应成功完成了PHP,但我需要检索所有数据并认为使用 JSON 会很棒。 这是 android 工作室代码,然后是 php 代码。

public class MainActivity extends AppCompatActivity {

    Button button_login;
    EditText username,password;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_screen);

        button_login = findViewById(R.id.button_login);
        username = findViewById(R.id.username);
        password = findViewById(R.id.password);



        button_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                login();
            }
        });
    }

    public void login() {
        String json_url = "https://app.jetransporte.ma/android/loginjson.php";
        Map<String, String> params = new HashMap();
        params.put("username", username.getText().toString());
        params.put("password", password.getText().toString());

        JSONObject parameters = new JSONObject(params);
        final JsonObjectRequest JsonObjectRequest = new JsonObjectRequest(Request.Method.POST, json_url, parameters,
                new Response.Listener<JSONObject> () {
                    @Override
                    public void onResponse(JSONObject response) {


                        try {
                            JSONObject json = new JSONObject();
                            String usname = json.getString("username");
                            String usid = json.getString("user_id");
                            String correct = json.getString("correct");
                            if(usid.contains("1")){
                                Intent intent = new Intent(getApplicationContext(), SelectorActivity.class);

                                startActivity(intent);
                            }else{
                                Toast.makeText(getApplicationContext(),
                                        "Login ou Mot de passe Incorrecte",Toast.LENGTH_SHORT).show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){

        };

        Volley.newRequestQueue(this).add(JsonObjectRequest);


    }
}                 

我想要执行的是从 mysql 数据库中检索数据,当尝试使用 GET 方法直接在浏览器上访问它时,它会给出一个带有括号 {} 的 json 对象,

这是 PHP 代码

<?php 
include "../db/db.php"; // $db->conn

$username = filter_input(INPUT_POST, "username");
$password = filter_input(INPUT_POST, "password");
$query= $db->query("SELECT * FROM tbl_user WHERE username = 'saad' ");
$countin = $query->rowCount();

if($countin>0){
    $fetchin= $query->fetch();      
    $json = json_encode($fetchin);
    echo $json;
}else{
    $fetchin['correct']="0"; 
    $json = json_encode(array("correct" => $fetchin["correct"]));
    echo $json;
} 
?>

任何帮助,我是 android studio 和 java 的新手,我真的很想让它工作

您已经在onResponse方法中获得了JSONObject。我不知道你为什么在那里创建空 JSONObject。请删除它并尝试如下:

@Override
public void onResponse(JSONObject response) {

    try {
        String usname = response.optString("username");
        String usid = response.optString("user_id");
        String correct = response.optString("correct");

        if(usid.contains("1")) {
            Intent intent = new Intent(getApplicationContext(), SelectorActivity.class);

            startActivity(intent);
        } else {
            Toast.makeText(getApplicationContext(),
                    "Login ou Mot de passe Incorrecte",Toast.LENGTH_SHORT).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

基本上,在使用了 Md. Asaduzzaman 提供的帮助之后。我能够在应用程序中执行该操作。但在那之后,发送到 php 脚本的参数中的 none 起作用了。所以解决方案是以这种方式获取参数:

$param = json_decode(file_get_contents("php://input"),true); $用户名 = $参数["username"]; $密码 = $参数["password"];

而不是 $_POST["username"]

有关此的更多信息: