如何从mule4调用curl命令?

问题描述 投票:0回答:1

我必须上传一个文件到一个API。但现在我想通过MuleSoft调用这个curl命令,我们该怎么做呢?我试过通过Execute组件(通过Groovy引擎),但文件正在被加载,控制台日志中也没有错误。

CURL COMMANDcurl -H "apiAccessKeyId:USERNAME" -H "apiSecretAccessKey:PASSWORD" -H "Accept:applicationjson" --form "file=@C:\Files\medialist.csv" --form "params={Type:Import}" -X POST http:/mysuperservisormediaupload

请提供建议?

curl groovy mule-component mulesoft mule4
1个回答
0
投票

你不应该尝试从Mule应用程序中执行curl命令。我强烈不鼓励这样做。相反,你应该使用Mule组件和连接器来重现相同的请求。

对于这种特定的情况,你可以使用文件连接器来读取文件,使用DataWeave转换来生成带有附件的多部分表单数据请求,使用HTTP请求连接器来发送相同的请求,并重现与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发送的内容匹配。

© www.soinside.com 2019 - 2024. All rights reserved.