1

我通过 @ResponseBody 从我的 Spring 控制器返回 JSON 数据。与此类似:

@RequestMapping("/api/someMethod.json")
public @ResponseBody MyClass someMethod(@RequestParam Long someVal, HttpServletRequest request) {
    return new MyClass(someVal);
}

MappingJacksonHttpMessageConverter 始终为 getContentLength() 返回 null,这导致内容长度标头为 -1。

我需要准确设置内容长度(以解决客户端上的一个单独问题,我无法访问修复)。

让此类计算生成的 JSON 的内容长度并将其设置在 content-length 标头中的最简单方法是什么?

我不想编写自己的 JSON 生成器并返回 json 字符串,因为我有很多 API 方法需要这个“修复”。

提前致谢。

4

1 回答 1

0

一般来说,您永远不必手动设置 HTTP 标头的内容长度。能够告诉服务有比实际发送的数据更多或更少的数据是非常危险的。似乎底层技术(在您的情况下为弹簧)实际上不应正确处理 json 转换。

也许 MyClass 对象没有正确转换为 json,这就是为什么没有内容?

于 2012-09-12T02:38:13.087 回答