将文件从mule发布到API

时间:2016-05-03 17:30:35

标签: mule apikit

我正在向第三方api提交文件。我可以使用邮递员提出请求,第三方接受回复: example postman request response

我的mule流程以http请求开始,我可以在message.inboundAttachments字典中发送文件,但我不知道如何在mule流程中向第三方构建请求。当我尝试将message.InboundAttachment [' Contract']项目设置到有效负载中时,我只是得到一条通用消息:

  

"发送HTTP请求时出错。消息有效内容的类型为:DataHandler"

我不确定失败的是什么。

下面的

更新是我尝试使用附件组件的部分流程的屏幕截图:

redacted flow screenshot

附件组件如下所示:

<set-attachment attachmentName="#[message.inboundAttachments.Contract.dataSource.part.fileName]" value="#[message.inboundAttachments['Contract'].getInputStream()]" contentType="multipart/form-data" doc:name="Attaching Contract"/>

我在尝试发送此错误时收到以下错误:

> ERROR 2016-05-03 11:26:45,597
> [[pan.internal.api].api-httpListenerConfig.worker.01]
> org.mule.exception.DefaultMessagingExceptionStrategy: 
> ******************************************************************************** Message               : Error sending HTTP request. Message payload is
> of type: NullPayload Type                  :
> org.mule.api.MessagingException Code                  : MULE_ERROR--2
> JavaDoc               :
> http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html
> Payload               : {NullPayload}
> ******************************************************************************** Exception stack is:
> 1. Remotely closed (java.io.IOException)
> 2. java.io.IOException: Remotely closed (java.util.concurrent.ExecutionException)  
> org.glassfish.grizzly.impl.SafeFutureImpl$Sync:349 (null)
> 3. java.util.concurrent.ExecutionException: java.io.IOException: Remotely closed (java.io.IOException)  
> org.mule.module.http.internal.request.grizzly.GrizzlyHttpClient:245
> (null)
> 4. Error sending HTTP request. Message payload is of type: NullPayload (org.mule.api.MessagingException)  
> org.mule.module.http.internal.request.DefaultHttpRequester:287
> (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
> ******************************************************************************** Root Exception stack trace: java.io.IOException: Remotely closed
> 
> ********************************************************************************

我还尝试清除“附件内容类型”字段,但似乎是必需的,并且也会引发错误。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您无需将附件添加为请求的有效内容,您需要做的是将其从InboundAttachments移至OutboundAttachments。请求者组件将检测是否存在OutboundAttachments并执行它们的多部分/表单数据请求。

HTH

<强>更新 复制附件将正确设置内容长度并传递内容,而不是设置附件:

<copy-attachments attachmentName="Contract"   doc:name="Attaching Contract"  />