Android 截击 : how to make json request without returned object?

标签 android json jersey android-volley

现在我正在做

 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 对象,也会调用错误回调。 如果我返回带有假数据的 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));
            }


        }
    };

关于Android 截击 : how to make json request without returned object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657450/

相关文章:

android - 在示例项目中,R.java 无法解析为变量

android - 奇怪的行为 Canvas - 位图自行旋转

java - 如何在 Android 中设置闹钟(即播放闹钟铃声)?

java - 更改 @Produces(...) 在 Jersey 生产的内容?

java - 如何使用 Jersey 客户端使用 Facebook JSON

android - config.xml格式问题

java - 使用 Spring Boot、fasterxml jackson 和 @OneToMany 注释将集合添加到 JSON 响应

php - 如何从 parseJSON 数组中获取每个数据

javascript - 在 Laravel 5.2 上的 post 请求中传递 Algolia id 属性而不是 Name Atributre

java - 如果没有设置则设置Http状态码