Java HttpClient:禁用分块编码
我正在使用ApacheCommonsHttpClient和Restlet来调用RESTfulWeb服务。不幸的是,我的服务器(基于RubyonRails)不喜欢HttpClient默认使用的Java HttpClient:禁用分块编码,java,http,restlet,apache-commons-httpclient,Java,Http,Restlet,Apache Commons Httpclient,我正在使用ApacheCommonsHttpClient和Restlet来调用RESTfulWeb服务。不幸的是,我的服务器(基于RubyonRails)不喜欢HttpClient默认使用的传输编码:chunked 有没有办法禁止对来自客户端的帖子使用分块编码?作为一般规则,对于不分块的请求,您需要指定帖子正文的确切大小,对于动态生成的数据,这意味着您需要在内存中缓冲整个响应,查看其大小,然后发送它 Apache客户端文档似乎证实了这一点:状态 请注意,chunked设置只是一个提示。如果使用H
传输编码:chunked
有没有办法禁止对来自客户端的帖子使用分块编码?作为一般规则,对于不分块的请求,您需要指定帖子正文的确切大小,对于动态生成的数据,这意味着您需要在内存中缓冲整个响应,查看其大小,然后发送它 Apache客户端文档似乎证实了这一点:状态 请注意,chunked设置只是一个提示。如果使用HTTP/1.0,则永远不会执行分块。否则,即使chunked为false,如果实体内容长度未知(-1),HttpClient也必须使用chunk编码
正如在Restlet邮件列表中所说,在Restlet版本2.1中,您可以将ClientResource#entityBuffering属性设置为true,以在内存中缓存内容并防止分块编码。最可靠的方法,正如@Slartibartfast在其回答中所暗示的,是显式地将HttpPost切换到HTTP 1.0协议