我使用 @ResponseBody 从 Spring Controller 返回 JSON 数据。与此类似:
@RequestMapping("/api/someMethod.json")
public @ResponseBody MyClass someMethod(@RequestParam Long someVal, HttpServletRequest request) {
return new MyClass(someVal);
}
MappingJacksonHttpMessageConverter 始终为 getContentLength() 返回 null,这会导致内容长度 header 为 -1。
我需要准确设置内容长度(以解决客户端上的一个单独问题,但我无法修复该问题)。
让此类计算生成的 JSON 的内容长度并将其设置在内容长度 header 中的最简单方法是什么?
我不想编写自己的 JSON 生成器并返回 json 字符串,因为我有很多 API 方法需要此“修复”。
提前致谢。
最佳答案
一般来说,您永远不必手动设置 HTTP header 的内容长度。能够告诉服务数据比实际发送的数据多或少是非常危险的。看来底层技术(在你的例子中是 spring)实际上应该没有正确处理 json 转换。
也许 MyClass 对象没有正确转换为 json,这就是没有内容的原因?
关于java - 如何让 MappingJacksonHttpMessageConverter 设置内容长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380404/