Google Volley无法通过传递参数获取JSON值

时间:2016-03-14 10:10:24

标签: json android-volley http-get jsonobjectrequest

我正在尝试传递一个userID参数,然后以JSON的形式获取响应。

所以如果userID=1那么响应就是 [{"carname":"Honda","carmodel":"Civic"}] 如果userID=5那么响应就是 [{"carname":"Honda","carmodel":"Civic"},{"carname":"VW","carmodel":"Golf"},{"carname":"Ford","carmodel":"Focus"}]

但由于某些原因,参数未被传递,如果是,那么我无法检索JSON中的值

这是我的代码:

public void getComments(int userID){
    String passURL = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest
            (passURL, new Response.Listener<JSONArray>(){

                @Override
                public void onResponse(JSONArray jsonArray) {
                    try {
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject = jsonArray.getJSONObject(i);

                            String carName = jsonObject.getString("carname");
                            String carModel = jsonObject.getString("carmodel");
                            UserStore userStore = new UserStore(carName, carModel);
                            list.add(userStore);
                            adapter.notifyDataSetChanged();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError volleyError) {

                }

            }) {
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("userID", Integer.toString(userID));
            return params;
        }
    };
    requestQueue.add(jsonArrayRequest);
}

我怀疑这与我在传递参数后尝试从数组中获取响应的事实有关。我的php适用于Postman

1 个答案:

答案 0 :(得分:0)

使用 mcxiaoke 库版本1.0.14及以上

<强> JsonArrayRequest

您需要在JsonArrayRequest中将Method设置为Post,如下所示

JsonArrayRequest jsonArrReq = new JsonArrayRequest(Method.POST,
url, null,new Response.Listener<JSONArray>() 
{
......
//onResponse
......
}

<强> getParams()方法

@Override
protected Map<String, String> getParams() {
     Map<String, String> params = new HashMap<String, String>();
     params.put("user", "Android");
     return params;
}