【问题标题】:Google Volley not able to get JSON values from passing parametersGoogle Volley 无法从传递参数中获取 JSON 值
【发布时间】:2016-03-14 10:10:24
【问题描述】:

我正在尝试传递 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 工作

【问题讨论】:

    标签: json android-volley http-get jsonobjectrequest


    【解决方案1】:

    使用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;
    }
    

    【讨论】:

    • new JsonArrayRequest 的参数不能超过 3 个
    • @LukazsPioetrzci:你应该在https://github.com/mcxiaoke/android-volley使用mcxiaoke的截击来拥有更多JsonArrayRequest的构造函数
    • 使用@BNK 提到的 Volley 库..您需要在请求中发送任何标头吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2017-09-12
    相关资源
    最近更新 更多