在HttpClient 3.1中,我们有
InputStreamRequestEntity.CONTENT_LENGTH_AUTO
// The content length will be calculated automatically.
如何在 4.1 中为 InputStreamEntity 实现相同的效果?
在HttpClient 3.1中,我们有
InputStreamRequestEntity.CONTENT_LENGTH_AUTO
// The content length will be calculated automatically.
如何在 4.1 中为 InputStreamEntity 实现相同的效果?
如果您处理 HTTP 1.1,您可以将 -1 作为长度。它将切换到(更有效的)分块编码,您不必明确指定内容长度;此外,您还可以获得其他好处。
您可以查看http://en.wikipedia.org/wiki/Chunked_transfer_encoding以了解有关分块编码的更多详细信息。
你不能因为他们在新版本中完全搞砸了 API。过去所做的是将整个流缓冲到内存中的字节数组中,所以现在您只需自己执行此操作并使用 ByteArrayEntity 代替。
看看这里的原始代码:http: //svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/java/org/apache/commons/httpclient/methods/InputStreamRequestEntity.java ?view=markup
从第 125 行开始。
整个 API 现在都是这样,所有的易用性都消失了。也许它是更好、更安全的实现,但它是可怕的 API。