Volley JSONObjectRequest Request.Method.POST但收到了GET

时间:2017-12-31 11:05:26

标签: java php android

我在下面的代码中创建了一个Custom JSONObjectRequest。

目前我做了Request.Method.POST,我在这里传递给超级班时确认了 super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, errorListener);。它以int 1(POST)收到,但在我的服务器(PHP)上收到时,日志收到"REQUEST_METHOD":"GET"

有没有人遇到过这种问题,或者可以帮助指出我在下面的代码中错过了什么。 正如你在下面看到的,我确定了下面的事情:

  • params不为空
  • 其中有getParams()函数且params不为空
  • 我甚至放getBody()并确保它不返回null

请参阅下面的代码,了解我曾尝试过的事情

try {
    JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject jsonObject) {

            if (jsonObject != null && jsonObject.length() > 0) {
                try {
                    if (jsonObject.getInt("status") == ResponseCode.LOGIN_FAILED) {

                        SharedManager sharedManager = new SharedManager();
                        sharedManager.logoutUser(context, true);

                        return;
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

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

        }
    }) {
        /**
         * Passing some request headers
         * */
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            return headers;
        }

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            try {
                return JSONHelperConverter.jsonToMapString(params);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8;";
        }

        @Override
        public byte[] getBody() {
            try {
                String postBody = null;
                try {
                    postBody = createPostBody(JSONHelperConverter.toMapString(params));
                    postBody = params.toString();
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                return postBody == null ? null : postBody.getBytes("utf-8");
            } catch (NegativeArraySizeException n) {
                n.printStackTrace();
                return null;
            } catch (UnsupportedEncodingException uee) {

                uee.printStackTrace();
                return null;
            }
        }

        @Override
        protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
            String responseString;
            JSONObject jsonObject = null;

            if (response != null) {
                try {
                    responseString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));

                    jsonObject = new JSONObject(responseString);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return Response.success(jsonObject, HttpHeaderParser.parseCacheHeaders(response));
        }
    };

    NetworkSingleton.getInstance(context).addToRequestQueue(stringRequest);
} catch (NegativeArraySizeException n) {
    n.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题 Sent POST request but server says GET request in Android volley, what I am doing wrong here?

<强>解决方案: 由于我要求PHP服务器,我需要指出文件名。

目前我将请求指向没有文件扩展名的网址,我只需将index.php添加到我的网址末尾即可。