在 java 播放框架 http 请求中设置内容长度 header
Set content length header in java play framework http request
我正在使用 play 2.5.x ws library
用于将文件上传到内部服务器。
我有使用 apache http/curl/postman 的示例代码。
但是当我尝试使用 ws 库时,它是如何失败的。
我无权访问内部服务器并且它没有返回任何错误消息
我检查了来自两个请求(apache http/play WS)的请求 headers,我看到 "Content length " header
WS 请求中缺少。
我试着用
设置它
ws.url(url).setHeader().post(Source.from(Arrays.asList(fp,name)
但我得到
"Stream has already been consumed and cannot be reset"
有什么方法可以设置内容长度吗?。
或者还有什么我想念的。
不幸的是,这没有正确记录,但您可以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
或让您的服务器接受分块传输。
我正在使用 play 2.5.x ws library 用于将文件上传到内部服务器。 我有使用 apache http/curl/postman 的示例代码。 但是当我尝试使用 ws 库时,它是如何失败的。 我无权访问内部服务器并且它没有返回任何错误消息
我检查了来自两个请求(apache http/play WS)的请求 headers,我看到 "Content length " header WS 请求中缺少。 我试着用
设置它ws.url(url).setHeader().post(Source.from(Arrays.asList(fp,name)
但我得到
"Stream has already been consumed and cannot be reset"
有什么方法可以设置内容长度吗?。 或者还有什么我想念的。
不幸的是,这没有正确记录,但您可以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
或让您的服务器接受分块传输。