首页 > 解决方案 > 有没有办法调试凌空 JSONArray 请求不起作用?

问题描述

我是 android 开发新手,无法调试此错误。从凌空java代码

    private void loadPending() {
                RequestQueue queue= Volley.newRequestQueue(getApplicationContext());
                int type = Request.Method.POST;
                String url = "http://budgetcalc.tk/api/dailybudget/pending_list.php";



        JsonArrayRequest request = new JsonArrayRequest(type, url,null,
                        new Response.Listener<JSONArray>(){
                            @Override
                            public void onResponse(JSONArray response) {
                                setPendingList(response);
                            }
                        },
                        new Response.ErrorListener(){
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                error.printStackTrace();
                                Toast.makeText(getApplicationContext(), "Error "+error.getMessage(), Toast.LENGTH_SHORT).show();
                            }
                        }){
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        HashMap<String, String> params = new HashMap<String, String>();
                        params.put("userName",userName);
                        return params;
                    }
                };

                queue.add(request);

    }

    private void setPendingList(JSONArray response) {
        List<HashMap<String,String>> list=new ArrayList<>();
        Toast.makeText(this, "came to setPending", Toast.LENGTH_SHORT).show();
        for (int i=0;i<response.length();i++){
            try {

                JSONObject obj=response.getJSONObject(i);
                HashMap<String,String> map= new HashMap<String,String>();
                map.put("id",obj.getString("id"));
                map.put("item_name",obj.getString("item_name"));
                map.put("item_amount",obj.getString("item_amount"));
                map.put("item_type",obj.getString("itme_type"));
                list.add(map);

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }

        //1. Layout File
        int layout = R.layout.today_done_list_layout;
        //2. View List
        int[] views = {R.id.today_pending_list_item_name, R.id.today_pending_list_item_amount,R.id.today_pending_list_item_type,R.id.id };
        //3. Column List
        String[] cols = {"item_name", "item_amount","item_type","id"};
        //4. Create Simple Adapter
        SimpleAdapter adapter = new SimpleAdapter(this, list, layout, cols, views);
        ListView lv = findViewById(R.id.today_pending_list);
        lv.setAdapter(adapter);


    }

从服务器端使用 post userName 值并返回 JSONarray,当我使用 POSTMAN 检查带有我的用户名的 url 时,它给出

[{"id":"9","item_name":"pen","item_amount":"1","itme_type":"Income"},{"id":"11","item_name":"pen\n\n","item_amount":"1","itme_type":"Income"}]

但是我从 logcat 得到一个错误

org.json.jsonexception 在 volley 的字符 0 处输入结束

当我使用这个凌空请求时,我认为 userName 参数不会发送到服务器

标签: androidjsonandroid-volley

解决方案


推荐阅读