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

标签 http compression gzip multipart multipartentity

我正在使用 apache httpclient 4.2 发送多部分 HTTP PUT 请求。客户端必须上传 500 MB 左右的大尺寸二进制数据。因此需要压缩。 我希望压缩整个 Multipart HTTP 请求并通过 header 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 - 此链接表示“协议(protocol)拦截器还可以操作消息中包含的内容实体 - 透明内容压缩/解压缩就是一个很好的例子。”但不知道如何获得所需的功能。

请给我一些指导,如果可能的话一些示例代码。

最佳答案

我终于能够解决这个需求

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

    ByteArrayBody 二进制数据 = new ByteArrayBody(compressedData, "二进制/八位字节流", "N/A"); binaryParts.add(binaryData); reqEntity.addPart(“uniqueId”,binaryPart);

关于http - 如何压缩客户端发送的 Multipart HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13059706/

相关文章:

php - 通过代理后应跳过哪些 HTTP header ?

language-agnostic - 随机访问 gzip 流

deployment - Heroku 推送 : gzip stdin not in gzip format

hadoop - 配置单元不正确的 header 检查

java - 在多个类中重用 Asynctask

c++ - 从 Poco http 客户端获取对字符串的响应

javascript - node.js 请求和 restify 客户端有什么区别?

c# - 在 Python 中压缩并使用解压缩 C# 解压缩的最简单方法(反之亦然)

java - 识别霍夫曼编码算法中字符的位置

iis - 何时对动态页面使用 gzip 压缩?