Mule 如何将CSV有效负载发布到HTTP上载服务器?

Mule 如何将CSV有效负载发布到HTTP上载服务器?,mule,Mule,我可以使用Postman将CSV文件发布到上传站点,但不能使用Mule。该站点是HTTPS,但在Postman中,我已关闭SSL证书验证。我使用的是一种内容类型:多部分/表单数据。附件称为“数据”,文件为CSV。这很有效 使用Mule它不起作用,这是我的代码片段 <sub-flow name="upload-content"> <set-attachment attachmentName="data" value="#[payload]" content

我可以使用Postman将CSV文件发布到上传站点,但不能使用Mule。该站点是HTTPS,但在Postman中,我已关闭SSL证书验证。我使用的是一种内容类型:多部分/表单数据。附件称为“数据”,文件为CSV。这很有效

使用Mule它不起作用,这是我的代码片段

<sub-flow name="upload-content">
        <set-attachment attachmentName="data" value="#[payload]" 
   contentType="application/csv" doc:name="Content Attachment"/>
        <set-property propertyName="Content-Type" 
value="application/multipart/form-data" doc:name="Set Outbound Header"/>
    <logger level="INFO" doc:name="Logger"/>
    <http:request config-ref="my-request-configuration" path="${my.upload.path}" method="POST" doc:name="HTTP Upload"/>
</sub-flow>

这是我的错误:

元素:/transaction history file/processors/2/upload content/subprocessors/3@prc transaction history:service.xml:52(HTTP上传)

元素XML: 根异常堆栈跟踪: java.util.NoSuchElementException 位于java.util.Collections$EmptyIterator.next(Collections.java:4189) 在com.mulesoft.mule.http.request.NameResolvingRequestBuilder.nextResolvedAddresses(NameResolvingRequestBuilder.java:99) 位于com.mulesoft.mule.http.request.NameResolvingRequestBuilder.setUrl(NameResolvingRequestBuilder.java:75) 位于org.mule.module.http.internal.request.grizzly.GrizzlyHttpClient.createGrizzlyRequest(GrizzlyHttpClient.java:545) 位于org.mule.module.http.internal.request.grizzly.GrizzlyHttpClient.sendAndWait(GrizzlyHttpClient.java:345)

有人能帮忙吗


提前感谢。

当您无法连接到主机时,会发生此问题。
检查应用程序中是否需要启用代理才能连接到主机。
选中此处此问题发生此异常是由于无法连接主机而导致的

尝试检查连接问题。Rest您的流看起来很好,就在HTTP请求组件将负载设置为null之前的末尾:

<set-payload value="#[null]"/> 

并删除:

<set-property propertyName="Content-Type" 
value="application/multipart/form-data" doc:name="Set Outbound Header"/>

就是这样,在
multipart/formdata
中,一切都是附件,body保持为null,您不需要设置
set属性


请不要指定contentType,否则Mule将无法在文章中提供多部分边界。

不需要将有效负载设置为null,如果存在附件,则将忽略它。@afelisatti如果不将有效负载设置为null,则无效。。您将无法在接收端获取附件密钥名称。。。您可以尝试在接收端使用
#[message.inboundAttachments.keySet()]
,该接收端将为空。我不确定我是否理解,这里的接收端将是一个外部HTTP服务器,那里没有附件,只有
多部分/表单数据
请求。如果存在附件,
http:request
组件将完全忽略有效负载(请参阅),因此在它之前将有效负载设置为null是毫无意义的。我尝试在有效负载未设置为null的情况下推送
多部分/表单数据
,我意识到它并没有像您所说的那样被忽略。事实上,在接收端,我丢失了附件密钥。因此,可能http请求的行为方式不符合您的请求配置,因此我们可以帮助您解决无法连接的原因。