如何压缩/压缩客户端发送的Multipart HTTP请求

时间:2012-10-25 00:04:45

标签: http compression gzip multipart multipartentity

我正在使用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 - 这个链接说"协议拦截器也可以操纵用消息包围的内容实体 - 透明内容压缩/解压缩就是一个很好的例子。"但不知道如何获得所需的功能。

如果可能的话,请给我一些方向代码。

1 个答案:

答案 0 :(得分:2)

我终于能够通过

解决这个问题了
  1. 创建org.apache.http.entity.mime.MultipartEntity对象reqEntity。
  2. 将压缩的二进制部分添加到HTTP请求

    ByteArrayBody binaryData =                   new ByteArrayBody(compressedData,“binary / octet-stream”,“N / A”);    binaryParts.add(binaryData);    reqEntity.addPart(“uniqueId”,binaryPart);