2016-05-03 50 views
0

我向第三方API提交文件。我可以通过邮递员发出请求,并且第三方接受响应: example postman request response从骡子到API的帖子文件

我的骡子流始于一个http请求,我能够发送的message.inboundAttachments字典文件,但我不确定如何在骡流中建立对第三方的请求。当我尝试了message.InboundAttachment [“合同”]项设置成有效载荷,我只是得到一个通用的消息:

"Error sending HTTP request. Message payload is of type: 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

您不需要将附件添加为请求的有效内容,您需要执行的操作是将其从InboundAttachments移至OutboundAttachments。请求者组件将检测到存在OutboundAttachments并执行一个multipart/form-data请求。

HTH

更新 复制附件将正确地设置内容长度和穿过的内容,而不是设置附件:

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

的内容是什么类型,我应该设置附件的内容类型?我将它设置为multipart/form-data,但失败 –

+0

我尝试过“binary/octet-stream”,但收到以下错误:org.mule.api.MessagingException:无MIME类型二进制/八位字节流的对象DCH (javax.activation.UnsupportedDataTypeException)。消息有效负载的类型为:NullPayload –

+0

我调整了我的更新以使用getInputStream方法,认为这可以解决问题,但现在我只是获得远程关闭。 –