如何从 mule4 调用 curl 命令

how to call curl command from mule4

我必须将文件上传到 API。我有它的 curl 命令,我可以通过邮递员成功加载。 但是现在我想通过 MuleSoft 调用这个 curl 命令? 我们该怎么做? 我尝试通过执行组件(通过 Groovy 引擎)。但是文件正在加载并且控制台日志中也没有错误。

卷曲命令 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 组件和连接器来重现相同的请求。

对于这种特定情况,您可以使用文件连接器读取文件,使用 DataWeave 转换生成带附件的多部分表单数据请求,然后使用 HTTP 请求连接器发送相同的请求并重现相同的 HTTP请求 curl 执行。

例如,它在 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 wire logging 查看请求是否与 CURL 发送的内容匹配。