【发布时间】:2014-07-03 13:37:10
【问题描述】:
我有一堆返回一些内容的 Web 服务,有时 > 100kb。 不幸的是,对于更大的结果,我得到了传输编码的部分响应:分块。
有没有办法禁用分块?
这就是我的方法:
@RequestMapping(value = "/form/{repository}/{objectId}", method = RequestMethod.GET, headers="()")
@ResponseBody
public FormHelper getFormConfig(HttpServletRequest req, HttpServletResponse resp, @PathVariable String repository,
@PathVariable("objectId") String objectId) throws Exception
这就是 Spring XML 配置:
<import resource="classpath*:context-aaa.xml" />
<mvc:annotation-driven />
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="useDefaultSuffixPattern" value="false" />
</bean>
我对 Jersey 库有同样的问题,所以我将项目重写为 Spring MVC,但它仍然存在......
提前感谢您的帮助。 马吕斯
【问题讨论】:
-
看起来 JSON 结果包含 Content-length 属性并且结果未分块。 XML 被分块返回,因此我报告了一个错误:jira.spring.io/browse/SPR-11948
-
这个答案指出 Content-length 标头是禁用分块传输的唯一选项。我已经知道了,不幸的是,使用 spring 我无法控制这样的标头,所以我向 Spring 团队报告了这个问题。
-
为什么不能设置Content-Length?根据这个 JIRA,从 Spring 3.0.5 开始可以在 MappingJacksonJsonView 上使用:jira.spring.io/browse/SPR-7866
-
对于 JSON,它是否已修复并且现在已正确设置,但对于 XML 则不是。
标签: spring spring-mvc