尝试使用来自Camel端点的REST API将文件上传到服务器。 以下是考虑中的骆驼端点的一部分
<camel:setBody>
<camel:simple>${header.objectdata.getData}</camel:simple><!-- 2mb file as String -->
</camel:setBody>
<camel:setHeader headerName="CamelHttpMethod">
<camel:constant>PUT</camel:constant>
</camel:setHeader>
<camel:recipientList id="ml-rest">
<camel:simple>{URL_HERE}</camel:simple>
</camel:recipientList>
上述端点适用于较小的文件。但对于~2mb文件,它会抛出
org.apache.commons.httpclient.NoHttpResponseException: The server localhost failed to respond
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1976)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)...
我尝试使用POSTMAN将相同的文件上传到服务器上(不是通过代码,驼峰),它运行正常。
尝试设置SO_TIMEOUT选项,但奇怪的是它显示上限为30秒。小于30的设置值似乎有效,但忽略大于30秒。我注意到这是基于以下日志语句出现的时间差异。
...
[t1] Request body sent
[t2] Closing the connection