首页 > 解决方案 > android json 获取请求

问题描述

我想打印制作android登录过程的用户的textview,我首先在php中将数据转换为json格式,但是当我在android url部分输入database/show.php时,textview输入为null。

php代码:

$id=$_GET["id"];
$sql=$conn->prepare("SELECT  id,name,surname,type FROM personel WHERE id='$id'");
$sql->execute();
$result=$sql->fetch(PDO::FETCH_ASSOC);
echo (json_encode($result));

Java代码:

    final String url = "database/show.php";
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
            (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {

                    try {

                           if(response.equals("başarılı")) {
                               userId.setText(response.getString("id").toString());
                               userName.setText(response.getString("name"));
                               userSurname.setText(response.getString("surname"));
                               userType.setText(response.getString("type"));
                           }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {

                    Toast.makeText(getApplicationContext(), "error"+error, Toast.LENGTH_SHORT).show();
                }

            });

// 通过你的单例类访问 RequestQueue。

MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);

标签: phpandroidjson

解决方案


我发现您的代码存在一些问题:

1-您没有在您的 id 中传递任何 id new JsonObjectRequest,因此您的 php 代码可能没有 GET 任何 id。(应该是final String url = "http://127.0.0.1/database/show.php?id=234";

2-您将查询中的 $id 视为字符串。id 通常是一个整数。(应该是WHERE id=$id

3-您的查询结果将是一个数组。所以你的客户会得到一个 JSONArray,而不是 JSONObject。(应该是response.getJSONObject(0).getString("id").toString()

4 - 什么是if(response.equals("başarılı"))?将 JSON 类型与 String 类型进行比较?


推荐阅读