为什么我的数据不出来?

时间:2017-07-16 06:06:16

标签: php android android-studio

public class Config {
    public static final String DATA_URL = "http://192.168.1.2/retrieveone.php?id=";
    public static final String KEY_NAME = "BusinessName";
    public static final String KEY_AmountTotal = "AmountTotal";
    public static final String KEY_RT = "RequiredTotal";
    public static final String KEY_MT = "MaxTotal";
    public static final String JSON_ARRAY = "result";
}

这是我的班级档案。

  private void getData(){
        String id = TempItem.toString().trim();
        if (id.equals("")) {
            Toast.makeText(this, "Please enter an id", Toast.LENGTH_LONG).show();
            return;
        }


        String url = Config.DATA_URL+TempItem.toString().trim();

        StringRequest stringRequest = new StringRequest(Request.Method.GET,url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                showJSON(response);
            }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(KPDetails.this,error.toString(),Toast.LENGTH_LONG).show();
                        error.printStackTrace();
                    }
                });
        int socketTimeout =50000;//5 seconds - change to what you want
        RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        stringRequest.setRetryPolicy(policy);
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }
 private void showJSON(String response){
        String name="";
        String AmountTotal="";
        String RequiredTotal = "";
        String MaxTotal = "";
        try {
            JSONObject jsonObject = new JSONObject(response);
            JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
            JSONObject stallsData = result.getJSONObject(0);
            name = stallsData.getString(Config.KEY_NAME);
            AmountTotal = stallsData.getString(Config.KEY_AmountTotal);
            MaxTotal = stallsData.getString(Config.KEY_MT);
            RequiredTotal = stallsData.getString(Config.KEY_RT);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Stall.setText("Name:\t"+name+"\nAmountTotal:\t" +AmountTotal+ "\nMaxTotal:\t"+ MaxTotal);
    }

这是我从mysql数据库获取数据的构造函数。但是,我设法得到了setText,但没有得到config中字符串的值。

这是我的php文件。

?php 


if($_SERVER['REQUEST_METHOD']=='GET'){

 $id  = $_GET['id'];

 require_once('conn.php');

 $sql = "SELECT * FROM business WHERE BusinessID='".$id."'";

 $r = mysqli_query($conn,$sql);

 $res = mysqli_fetch_array($r);

 $result = array();

 array_push($result,array(
 "BusinessName"=>$res['BusinessName'],
 "AmountTotal"=>$res['AmountTotal'],
 "RequiredTotal"=>$res['RequiredTotal'],
"MaxTotal"=>$res['MaxTotal']
 )
 );

 echo json_encode(array("result"=>$result));

 mysqli_close($conn);

}

http://localhost/retrieveone.php?id=1”工作得很好,但价值只是没有出现在我的setText中。 我是Android Studio的初学者。任何帮助表示赞赏。提前谢谢。

编辑:

这是我的错误。 java.lang.String类型的值连接无法转换为JSONObject

2 个答案:

答案 0 :(得分:0)

首先使用响应文本声明一个json数组,然后创建一个JSONObject。 试试这个..

   try {
        JSONArray result = new JSONArray(response);
        JSONObject stallsData = result.getJSONObject(0);
        name = stallsData.getString(Config.KEY_NAME);
        AmountTotal = stallsData.getString(Config.KEY_AmountTotal);
        MaxTotal = stallsData.getString(Config.KEY_MT);
        RequiredTotal = stallsData.getString(Config.KEY_RT);
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

在访问之前,您是否导入/包含了“Config”类文件?

请将您的代码放在try / catch块中并输出异常以获取更多信息。