【问题标题】:Android StringRequest Volley not send post valueAndroid StringRequest Volley 不发送帖子值
【发布时间】:2015-11-01 12:00:39
【问题描述】:

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

        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);

我不知道怎么了?

【问题讨论】:

  • 你是在 RequestQueue 中添加凌空请求吗?
  • 是的,我添加并更新了代码,
  • 首先尝试检查发布请求是否通过其他基于浏览器的插件发送,例如 rest easy。

标签: android post android-volley


【解决方案1】:

您的 POST 请求应使用 getBody 而不是 getParams

您可以参考我的以下工作示例代码(将我的 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();
        }
        ...

【讨论】:

  • 没用。我上周使用 getParams() 并正常工作,但突然崩溃了。
  • 突然崩溃了?有可用的 logcat 吗?
  • 这段代码不工作,getParams 上周工作,但现在不工作。并且没有参数发送到服务器。 D/Response:{"error":true,"error_msg":"必需的参数'tag'丢失!"}
  • 检查您的服务器应用程序,看看它是否有任何更改。看起来您没有将“tag”参数作为服务器要求发送?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多