【问题标题】:Mule ESB and "multipart/form-data"Mule ESB 和“multipart/form-data”
【发布时间】:2018-06-21 00:07:51
【问题描述】:

我有一个允许我上传文件的有效 Web 服务。我想把 Mule 3 放在它前面,但我没有成功让它传递 MIME 类型为“multipart/form-data”的有效负载。

尝试这样做会产生 400 错误:“客户端发送的请求在语法上不正确(错误请求)。”

以下流程(它没有达到我的目的,但用作测试)工作正常,传递我发布的任何文本。

<flow name="Flow1" doc:name="Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="test/rule_file" mimeType="text/plain" doc:name="HTTP"/>
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8080" path="test/rule_file" mimeType="text/plain" doc:name="HTTP"/>
</flow>

但是,当我从“text/plain”切换到“multipart/form-data”时,会产生上面列出的错误。

<flow name="Flow1" doc:name="Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="test/rule_file" mimeType="multipart/form-data" doc:name="HTTP"/>
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8080" path="test/rule_file" mimeType="multipart/form-data" doc:name="HTTP"/>
</flow>

有人能指出我如何让​​这个工作吗?

【问题讨论】:

    标签: mule esb multipartform-data


    【解决方案1】:

    您似乎正在尝试构建 HTTP 代理:要使其正常工作,您必须在流程的请求和响应阶段复制属性,并传播可能已在入站 HTTP 端点上使用的路径扩展.

    这可以手动实现,但最好使用现成的模式:

    <pattern:http-proxy name="patternProxy"
        inboundAddress="http://localhost:8081/test/rule_file"
        outboundAddress="http://localhost:8080/test/rule_file" />
    

    【讨论】:

    • 嗨,大卫。感谢您的回复;它有帮助。我现在的问题是数据没有以我期望的方式通过该模式。我有一个用户浏览文件的表单。该文件被传递给上传它的 Web 服务。当我直接针对 Web 服务时,这是可行的。当我通过该模式时,所有反斜杠都从文件路径中删除,使名称一文不值。有什么配置可以解决这个问题吗?
    • 哇,这听起来像是一个讨厌的错误 :( 你能设计一个重现问题的curl 命令,以便我进行调查吗?
    • 好吧,作为 Linux 世界的新手,我必须先研究一下这是什么。 微笑 但是,这不是必需的。经过进一步调查,问题似乎是特定于浏览器的;我只在IE上看到它,所以我认为这不是Mule的错。谢谢你的帮助。我真的很感激,并且会投票赞成你的回答,除了(也是新来的)我还没有任何“声誉”,所以它不会让我投票。
    • Oh IE :'( 但是即使 this 浏览器仍然可以使用代理...我很好奇发生了什么。即使在 SO 知道,你也应该能够接受我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多