如何通过Spring的chunked传输编码发送HTTP请求

时间:2013-11-14 22:48:21

标签: java spring http rest

在我沮丧地放弃并改写这种“旧学校风格”(不使用Spring)之前,我希望知道Spring的HTTP客户端知识的人可以帮助我。

我想通过HTTP将一些大数据发送到Web服务。我希望能够以块状发送它。 Spring源代码清楚地表明,如果您调用SimpleClientHttpRequestFactory的{​​{1}}方法,将其布尔参数设置为setBufferRequestBody,则生成的false将“流”到其目标,即,它将使用“分块传输编码”。但是,有一点需要注意:只有在请求内容长度为 unknown 时才会使用分块编码。

那是我的问题。我不能,笨拙地说,弄清楚如何使内容长度未知。这里的场景可能是一个大字节数组,我希望以较小的块发送,而不是一次性发送。但在我看来,几个相关的ClientHttpRequest调用,例如RestTemplateexchange(),确切地知道请求内容是什么以及它有多长。所以,按照这样的顺序:

postForObject()

交换逻辑可以检查HttpEntity<Object> entity = new HttpEntity<Object>(payload, headers); ResponseEntity<byte[]> response = null; response = restTemplate.exchange(svcUrl, httpMethod, entity, byte[].class); 以确定请求正文的长度( payload ,在我的示例代码中)。因此,请求将以HttpEntity标头发送。

我觉得我必须遗漏一些非常明显的东西。我很感激你可以解决这个问题。

环境:

  1. 几个Spring组件的3.2.3版本
  2. JDK 1.7.0_40
  3. Windows 2008R2(暂时)

0 个答案:

没有答案