【问题标题】:Android reading array returned from php从 php 返回的 Android 读取数组
【发布时间】:2020-04-15 22:43:36
【问题描述】:

我正在阅读一个 android 方法中的 php 响应。

PHP

 if(mysqli_num_rows($result)>0) {
        $status = "Success!";
        echo "Success!";
    } else {
        echo "Login failed";
    }

安卓

@Override
    protected void onPostExecute(String result) {
        if(result.equals("Success!")) {
            Toast.makeText(context, "Login Successful!", Toast.LENGTH_LONG).show();
            Intent goToWelcomePage = new Intent(context, welcome.class);
            context.startActivity(goToWelcomePage);
        } else if (result.equals("User Created")){
            Toast.makeText(context, "User Created.  Login Now.", Toast.LENGTH_LONG).show();
            Intent goToLoginPage = new Intent(context, MainActivity.class);
            context.startActivity(goToLoginPage);
        } else {
            Toast.makeText(context, result, Toast.LENGTH_LONG).show();
        }
    }

上面的脚本运行没有任何问题。

但是,我想读取结果数组。我在 PHP 中尝试过。

$status = array();

if(mysqli_num_rows($result)>0) {
    $status = "Success!";
    echo json_encode(array("result"=>$status,"name"=>$username));   
} else {
    $status = "Login failed";
    echo json_encode(array("result"=>$status));
}

不确定如何在 Android 中阅读此内容。此外,我不确定上面的php是否是将结果返回给android的正确方法。

【问题讨论】:

  • php 部分无关紧要。您可能需要编辑您的问题以包含您的服务器为此调用返回的 json 响应

标签: php android arrays


【解决方案1】:

PHP代码没有问题,如果你想要的是至少它可以返回一个正确的json,如果你想要的是:

{"result":"Success!","name":"YOUR_LOGIN_NAME"}

{"result":"Login failed"}

在 Android 中,您应该使用 json 解析器库来解析“结果”,例如 Gson(https://github.com/google/gson)。

您可以创建一个响应类,如:

class MyResponse {
    String result;
    String name;
}

然后你可以简单地调用你的代码:

@Override
protected void onPostExecute(String result) {
    Gson gson = new Gson();
    MyResponse response = gson.fromJson(result, MyResponse.class);
    switch (response.result) {
        case "Success!":
            // do something when login success
            // can call response.name here to read the login name
            break;
        case "Login failed":
            // do something when login failed
            break;
        // and more...
    }

如果您对现代 HTTP 客户端感兴趣,可以看看:
好的http (https://github.com/square/okhttp)
改造 (https://github.com/square/retrofit)

【讨论】:

  • 谢谢...您的代码提供了帮助。我做了一些更改以满足我的要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2014-07-31
  • 1970-01-01
  • 2018-11-21
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多