You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看JsonObjectRequest的网络响应?附相关请求代码

如何查看JsonObjectRequest的网络响应?

我来给你几种实用的方法,帮你轻松查看Volley中JsonObjectRequest的网络响应,从基础的响应内容打印到完整的请求/响应信息都覆盖到了:


方法1:在onResponse中直接打印响应内容

这是最直接的方式,你可以在收到响应的回调里直接打印整个JSONObject,快速查看返回的数据:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, 
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            // 打印原始JSON响应
            Log.d("NetworkResponse", "原始响应内容: " + response.toString());
            
            // 你的原有业务逻辑
            ArrayList<String> empresas = new ArrayList<String>();
            for (Iterator<String> it = response.keys(); it.hasNext(); ) {
                String key = it.next();
                try {
                    String empresa = (String) response.get(key);
                    empresas.add(empresa);
                    empresasMap.put(key, empresa);
                } catch (JSONException e) {
                    e.printStackTrace();
                    // 解析出错时也可以打印响应,方便排查问题
                    Log.e("JSONParseError", "解析key[" + key + "]失败,响应内容:" + response.toString());
                }
            }
        }
    }, 
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // 别忘了处理错误响应!如果有错误返回,也可以查看错误体
            if (error.networkResponse != null) {
                try {
                    String errorBody = new String(error.networkResponse.data, "UTF-8");
                    Log.e("VolleyError", "错误响应体: " + errorBody);
                    Log.e("VolleyError", "错误状态码: " + error.networkResponse.statusCode);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            error.printStackTrace();
        }
    });

方法2:格式化JSON响应,让内容更易读

如果返回的JSON结构复杂,直接打印toString()会显得杂乱,用Gson格式化后会更清晰:

  1. 先添加Gson依赖(如果还没加),在你的build.gradle(Module level)中添加:
implementation 'com.google.code.gson:gson:2.10.1' // 可以使用最新版本
  1. 在onResponse中格式化并打印:
@Override
public void onResponse(JSONObject response) {
    // 格式化JSON响应
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    String formattedResponse = gson.toJson(response);
    Log.d("NetworkResponse", "格式化后的响应:\n" + formattedResponse);
    
    // 你的原有逻辑...
}

方法3:查看完整的网络响应(包括响应头、状态码)

如果需要查看更底层的网络信息(比如响应头、原始字节转成的字符串),可以重写JsonObjectRequest的parseNetworkResponse方法:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, 
    // 你的Listener和ErrorListener...
) {
    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        // 打印完整的网络响应信息
        Log.d("FullResponse", "响应状态码: " + response.statusCode);
        Log.d("FullResponse", "响应头信息: " + response.headers.toString());
        try {
            String rawResponseBody = new String(response.data, "UTF-8");
            Log.d("FullResponse", "原始响应体:\n" + rawResponseBody);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        // 调用父类方法继续解析
        return super.parseNetworkResponse(response);
    }
};

这样不管是正常响应还是错误响应,你都能全面掌握网络请求的细节,方便调试和排查问题。

内容的提问来源于stack exchange,提问作者Ericson Willians

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:09:32