Android Volley:如何在没有返回对象的情况下发出 json 请求?

Android Volley: how to make json request without returned object?

现在我在做

 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
                Request.Method.POST, uri, json,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        // do action
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        //manage error
                    }
                }
        );

我的 servlet 使用 Jersey 作为 JAX-RS。 作为参数传递的 uri 调用的资源不会产生任何 json 对象。如果我这样做,即使在服务器上正确使用 POST 发送的 json 对象,也会调用错误回调。 如果我 return a json 带有假数据然后调用响应回调,但我不需要发回对象(浪费用户的数据带宽)。如果响应代码是 OK 或 200,我想执行正常响应操作。 我该怎么办?

您可以覆盖 JsonObjectRequest 的 parseNetworkResponse 方法,使其接受空响应:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
            Request.Method.POST, uri, json,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject jsonObject) {
                    // do action
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError volleyError) {
                    //manage error
                }
            }
        ) {

        @Override
        protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {


            try {
                String json = new String(
                        response.data,
                        "UTF-8"
                );

                if (json.length() == 0) {
                    return Response.success(
                            null,
                            HttpHeaderParser.parseCacheHeaders(response)
                    );
                }
                else {
                    return super.parseNetworkResponse(response);
                }
            }
            catch (UnsupportedEncodingException e) {
                return Response.error(new ParseError(e));
            }


        }
    };