我正在使用apache httpclient 4.2发送Multipart HTTP PUT请求。客户端必须上传大小为500 MB的大型二进制数据。因此需要压缩。 我希望压缩整个Multipart HTTP请求,并通过标题Content-Encoding:gzip通知服务器。我控制服务器以及客户端代码。
注意:我知道可以选择性地压缩大尺寸二进制数据的方法。不是整个请求,但现在我排除了这种方法。
httpclient的HttpRequestInterceptor类不提供请求输入流的句柄或压缩请求的实体。
我在网上搜索过&发现很少的相关链接(如下),但没有一个有效 1. http://old.nabble.com/compressing-multipart-request-from-custom-client-tt27804438.html#a27811350 2. http://hc.apache.org/httpcomponents-client-ga/tutorial/html/fundamentals.html#protocol_interceptors - 这个链接说"协议拦截器也可以操纵用消息包围的内容实体 - 透明内容压缩/解压缩就是一个很好的例子。"但不知道如何获得所需的功能。
如果可能的话,请给我一些方向代码。
答案 0 :(得分:2)
我终于能够通过
解决这个问题了将压缩的二进制部分添加到HTTP请求
ByteArrayBody binaryData = new ByteArrayBody(compressedData,“binary / octet-stream”,“N / A”); binaryParts.add(binaryData); reqEntity.addPart(“uniqueId”,binaryPart);