curl - 如何从 mule4 调用 curl 命令
问题描述
我必须将文件上传到 API。我有它的 curl 命令,我可以通过邮递员成功加载。但是现在我想通过MuleSoft调用这个curl命令?我们该怎么做?我尝试通过执行组件(通过 Groovy 引擎)。但是文件正在加载并且控制台日志中也没有错误。
CURL 命令 curl -H "apiAccessKeyId:USERNAME" -H "apiSecretAccessKey:PASSWORD" -H "Accept:application/json" --form "file=@C:\Files\medialist.csv" --form "params={Type :Import}" -X POST http://mysuperserver/media/upload/
请问有什么建议吗?
解决方案
您不应尝试从 Mule 应用程序执行 curl 命令。我强烈反对这样做。相反,您应该使用 Mule 组件和连接器来重现相同的请求。
对于这种特定情况,您可以使用 File 连接器读取文件,使用 DataWeave 转换生成带有附件的多部分表单数据请求,并使用 HTTP Request 连接器发送相同的请求并重现 curl 执行的相同 HTTP 请求。
例如,它在 XML 视图中看起来与此类似:
<flow name="so-file-http-request-sendFlow">
<file:read doc:name="Read" path="c:\files\medialist.csv"/>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output multipart/form-data
---
{
parts : {
params : {
headers : {
"Content-Type": "text/plain"
},
content : "{Type=import}"
},
file : {
headers : {
"Content-Disposition" : {
"name": "file",
"filename": "medialist.csv"
},
"Content-Type" : "application/csv"
}
}
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<http:request method="POST" doc:name="Request" config-ref="HTTP_Request_configuration" path="/media/upload/">
<http:headers ><![CDATA[#[output application/java
---
{
Accept : "application/json",
apiAccessKeyId : "USERNAME",
apiSecretAccessKey : "PASSWORD"
}]]]></http:headers>
</http:request>
</flow>
您可以使用HTTP 线路日志来查看请求是否与 CURL 发送的内容匹配。
推荐阅读
- flutter - 带有持久抽屉和应用栏的 Flutter Web Navigation
- java - 需要查找特定角色的所有用户 JPA Criteria API
- javascript - 在 Material UI 和 React 的文本输入中添加图标
- latex - Koma scrbook 似乎不包括 BCOR
- javascript - Braintree - Google Pay 按钮不显示
- c# - 在类 c# 中添加默认值
- ionic-framework - 在 wifi adb 上运行 ionic live reload 时出错
- linux - tar.gz 的 Linux 拆分在加入时运行良好,但在 S3 存储桶的帮助下转移到远程机器时
- windows - NginX for Windows 是否支持 IPv6?
- javascript - 如何解决将 javaScript 添加到 wso2 中的错误?