首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Volley是否具有JSON参数、字符串响应本机支持

Volley是否具有JSON参数、字符串响应本机支持
EN

Stack Overflow用户
提问于 2016-07-29 13:25:22
回答 2查看 282关注 0票数 0

我想发出一个服务器POST请求,发送一个JSON有效负载,并接收一个字符串响应。我到处寻找,似乎没有一种简单的方法来使用Volley库来做到这一点,而不是实现一个自定义请求(当我试图实现它时,我完全迷失了它)。执行此POST请求的“正确”方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-29 14:02:18

代码语言:javascript
代码运行次数:0
运行
复制
    final JSONObject body = new JSONObject();
    try {
        // Todo: populate JSON body
    } catch (JSONException e) {
        e.printStackTrace();
    }

    StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://...",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }
    ) {
        @Override
        public byte[] getBody() throws AuthFailureError {
            return body.toString().getBytes();
        }

        @Override
        public String getBodyContentType() {
            return "application/json";
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
票数 1
EN

Stack Overflow用户

发布于 2016-07-29 13:49:44

Volley有JsonObjectRequest和JsonArrayRequest。

代码语言:javascript
代码运行次数:0
运行
复制
 /**
     * Making json object request
     * */
    public void makeJsonObjReq(String url) {

        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
                url,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
//                      msgResponse.setText(response.toString());

                    }
                }, new Response.ErrorListener() {

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

            }
        }) {

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

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

        };

        // Adding request to request queue
        ApplicationController.getInstance().addToRequestQueue(jsonObjReq,
                tag_json_obj);

        // Cancelling request
        // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_obj);
    }



 /**
     * Making json array request
     * */
    public void makeJsonArryReq(String url, final int _type) {

        JsonArrayRequest req = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        apiTaskListener.onTaskComplete("error",_type);


                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                apiTaskListener.onTaskComplete("error",_type);

            }
        });

        // Adding request to request queue
        ApplicationController.getInstance().addToRequestQueue(req,
                tag_json_arry);

        // Cancelling request
        // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_arry);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38651055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档