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

Android中如何用Volley库解析HTTP响应头?

用Volley获取POST请求的响应头

嘿,我懂你不想换库的纠结——毕竟已经在Volley上投入了不少精力,重新切换框架实在没必要。别担心,用Volley获取响应头其实没那么复杂,我来给你一步步说明白。

核心逻辑

Volley的Response对象本身就提供了获取响应头的方法:headers(),它会返回一个Map<String, String>,包含了所有响应头的键值对。不管你用的是StringRequest还是自定义的Request子类,都能直接用这个方法拿到你需要的头信息。

完整代码示例

下面是一个实现了POST请求并获取响应头的完整例子,重点看onResponse里的处理:

// 替换成你的接口地址
String targetUrl = "https://your-api-endpoint.com";

StringRequest postRequest = new StringRequest(Request.Method.POST, targetUrl,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // 关键:从Response中获取所有响应头
                Map<String, String> responseHeaders = response.headers();
                
                // 方式1:遍历打印所有响应头
                for (Map.Entry<String, String> headerEntry : responseHeaders.entrySet()) {
                    Log.d("VolleyHeaders", String.format("%s: %s", headerEntry.getKey(), headerEntry.getValue()));
                }
                
                // 方式2:直接获取特定的响应头,比如Authorization或者Content-Type
                String authHeader = responseHeaders.get("Authorization");
                if (authHeader != null) {
                    Log.d("VolleyHeaders", "Authorization: " + authHeader);
                }
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // 处理请求错误
                Log.e("VolleyError", "请求失败: " + error.getMessage());
            }
        }
) {
    @Override
    protected Map<String, String> getParams() {
        // 设置POST请求的参数,对应curl里的-d参数
        Map<String, String> postParams = new HashMap<>();
        postParams.put("username", "test_user");
        postParams.put("password", "test_pass");
        return postParams;
    }
};

// 将请求添加到Volley请求队列
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(postRequest);

小提示

  • 如果遇到多值的响应头(比如Set-Cookie可能有多个),Volley会把它们用逗号合并成一个字符串,你可以根据需求自己拆分处理。
  • 如果你用的是JsonObjectRequest或者JsonArrayRequest,用法完全一致,onResponse里的Response<JSONObject>或Response<JSONArray>同样有headers()方法。

这样就完全实现了你要的curl --include的效果——既能拿到响应体,也能获取所有响应头信息啦。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:47:55