【问题标题】:how to call curl command from mule4如何从 mule4 调用 curl 命令
【发布时间】:2020-09-07 17:59:54
【问题描述】:

我必须将文件上传到 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/

请给点建议?

【问题讨论】:

    标签: curl groovy mule-component mulesoft mule4


    【解决方案1】:

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

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

    【讨论】:

    • 这是一个阐明方法的示例,您应该适应您的需要并使其发挥作用。它不是一个完整的工作应用程序。我看到您基于此解决方案发布了另一个答案。我觉得这意味着答案是有用的,可以被接受为有效的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 2019-08-10
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多