我正在使用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"
有什么方法可以设置内容长度吗? 或者还有什么我想念的。
答案 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
或让您的服务器接受分块转移。