在java play framework http请求中设置内容长度标题

时间:2016-07-29 14:14:57

标签: playframework multipartform-data content-length playframework-webservice

我正在使用play 2.5.x ws library 用于将文件上载到内部服务器。 我有使用apache http / curl / postman的示例代码。 但是当我尝试使用ws库时,它的失败程度如何。 我无法访问内部服务器,也没有返回任何错误消息

我检查了两个请求的请求标头(apache http / play WS),我看到了“Content length”标头 WS请求中缺少。 我试着用

设置它
ws.url(url).setHeader().post(Source.from(Arrays.asList(fp,name)

但我正在

"Stream has already been consumed and cannot be reset"

有什么方法可以设置内容长度吗? 或者还有什么我想念的。

1 个答案:

答案 0 :(得分:0)

不幸的是,这没有正确记录,但您可以look at the code了解post(Source)的工作原理:

// If the body has a streaming interface it should be up to the user to provide a manual Content-Length
// else every content would be Transfer-Encoding: chunked
// If the Content-Length is -1 Async-Http-Client sets a Transfer-Encoding: chunked
// If the Content-Length is great than -1 Async-Http-Client will use the correct Content-Length

-1是默认设置。

因此,目前,我们可以设置Content-Length或让您的服务器接受分块转移。