Android StringRequest Volley不发送帖子值

时间:2015-11-01 12:00:40

标签: android post android-volley

我正在使用android volley,我想用stringRequest发送帖子数据。 但是param并没有发送到服务器。这是我的代码:

        StringRequest jsonObjReq = new StringRequest(Request.Method.POST, url,  new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {

                Log.d(TAG,  response);


    }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Volley Error: " + error.getMessage());


            }

        })
    {

            @Override
            protected Map<String, String> getParams() {

                params = new HashMap<String, String>();
                params.put("tag", "openApp");
                Log.d("Params", params + "");

                return params;
            }
        };

    jsonObjReq.setShouldCache(false);


        AppController.getInstance().addToRequestQueue(jsonObjReq);

我不知道有什么不对?

2 个答案:

答案 0 :(得分:2)

而不是getParams,您应该使用getBody作为POST请求。

您可以参考我的以下工作示例代码(由您替换我的JSONObject和Url)。希望这有帮助!

        ...   
        try {
            RequestQueue queue = Volley.newRequestQueue(this);
            jsonBody = new JSONObject();
            jsonBody.put("Title", "Android Volley POST DATA Demo");
            jsonBody.put("Author", "BNK");
            jsonBody.put("Date", "2015/11/01");
            requestBody = jsonBody.toString();

            StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // do something...
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // do something...
                }
            }) {
                @Override
                public String getBodyContentType() {
                    return "application/json; charset=utf-8";
                }

                @Override
                public byte[] getBody() throws AuthFailureError {
                    try {
                        return requestBody == null ? null : requestBody.getBytes("utf-8");
                    } catch (UnsupportedEncodingException uee) {
                        e.printStackTrace();
                        return null;
                    }
                }
            };
            queue.addToRequestQueue(stringRequest);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        ...

答案 1 :(得分:0)

是的,错误是关于服务器的,我的代码是正确的。