
SpringBoot请求参数及HTTP头信息打印问题及解决方法
在使用SpringBoot处理请求时,直接打印请求参数有时会显示内存地址而非实际值,且HTTP头信息缺失。本文分析此问题并提供解决方案。
问题描述:
- 请求参数打印结果为内存地址而非实际值。
- HTTP头信息无法打印。
解决方案:
1. 解决内存地址问题:
当请求参数为数组或集合时,直接打印会输出内存地址。 需要将其转换为字符串形式输出。 可以使用Arrays.toString()方法:
map.forEach((k, v) -> log.info("Key: " + k + ", Value: " + Arrays.toString(v)));
2. 打印HTTP头信息:
SpringBoot的@RequestBody注解处理请求体,@RequestParam注解处理请求参数。要获取HTTP头信息,需使用@RequestHeader注解:
@PostMapping("/test")
public void test(@RequestBody String body, @RequestHeader Map headers) {
log.info("Request Body: {}", body);
headers.forEach((key, value) -> log.info("Header: {} = {}", key, value));
}
此方法可以打印所有HTTP头信息。 如果只需要特定头信息,可直接在@RequestHeader注解中指定头字段名称,例如:
@PostMapping("/test")
public void test(@RequestHeader("User-Agent") String userAgent) {
log.info("User-Agent: {}", userAgent);
}
通过以上方法,即可正确打印SpringBoot请求中的参数和HTTP头信息,避免内存地址显示和信息缺失的问题。











