Volley什么样的请求类型用于格式

时间:2018-02-24 07:58:08

标签: android json android-volley android-networking

我是android Volley的新手。我访问API服务器,其响应是JSON。

响应JSON就像这样\

 {
    status:true,
    data : [{
             id:1,
             name:'name 1',
            },
            {
             id:2,
             name:'name 2 ',
             }]
 }

我尝试过使用JsonObjectRequest&排球中的JsonArrayRequest。两者都抛出错误。什么是正确的请求类型以及如何解析它?

1 个答案:

答案 0 :(得分:0)

您需要使用JsonObjectRequest,如果是帖子请求,请使用以下

try{
        JSONObject jsonBody = new JSONObject("add json body to post");

        RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(LookUp.url, jsonBody,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                      //  pDialog.cancel();

                        try{
                        if(response.getString("status").equals("true")){
                            JSONArray jsonArray=response.getJSONArray("data");


                            for(int i=0;i<jsonArray.length();i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                String name=jsonObject.getString("name");

                            }
                        }
                        }
                        catch (JSONException error){
                            Log.e("TAGJE", error.getMessage());
                        }
                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("TAGE", error.getMessage(), error);
            }

        }){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("Content-Type", "application/json");
                return params;
            }

        };
        mQueue.add(jsonObjectRequest);
    }
    catch (JSONException ex){
        ex.printStackTrace();
    }

和获取请求请按照

进行操作
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
            url, null,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    try{
                    if(response.getString("status").equals("true")){
                        JSONArray jsonArray=response.getJSONArray("data");


                        for(int i=0;i<jsonArray.length();i++) {
                            JSONObject jsonObject = jsonArray.getJSONObject(i);
                            String name=jsonObject.getString("name");

                        }
                    }
                    }
                    catch (JSONException error){
                        Log.e("TAGJE", error.getMessage());
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());

                }
            });