Mule ESB和;“多部分/表单数据”;

Mule ESB和;“多部分/表单数据”;,mule,esb,multipartform-data,Mule,Esb,Multipartform Data,我有一个工作的网络服务,允许我上传一个文件。我想把Mule 3放在它前面,但我没有成功地让它传递MIME类型为“multipart/form data”的有效负载 尝试这样做会产生400错误:“客户端发送的请求在语法上不正确(错误请求)。” 下面的流程(虽然没有达到我的目的,但作为一个测试)运行良好,传递我发布的任何文本 <flow name="Flow1" doc:name="Flow1"> <http:inbound-endpoint exchange-pattern="r

我有一个工作的网络服务,允许我上传一个文件。我想把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>

但是,当我从“文本/普通”切换到“多部分/表单数据”时,它会产生上面列出的错误

<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>


有人能指出我是如何做到这一点的吗?

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

手工制作是可行的,但最好使用现成的图案:

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


你好,大卫。谢谢你的回答;这有帮助。我现在的问题是,数据没有以我期望的方式通过该模式。我有一个表单,用户可以在其中浏览文件。该文件被传递给上传它的Web服务。当我直接反对Web服务时,这是有效的。当我遍历该模式时,所有反斜杠都会从文件路径中删除,从而使名称一文不值。是否有一些配置可以修复此问题?哇,这听起来像一个讨厌的bug:(你能设计一个
curl
命令来重现这个问题吗?好吧,作为Linux世界的新手,我必须先研究一下它是什么。不过,微笑是没有必要的。经过进一步的调查,这个问题似乎是特定于浏览器的;我只在IE上看到它,所以我不认为这是Mule的错。谢谢你的帮助。我真的很感激,我会投票支持你的答案,除了(也是新来的)我还没有任何“声誉”,所以它不会让我投票。哦,IE:'(但即使是在这个浏览器上,代理也应该有效……我很好奇到底发生了什么事。即使你知道,你也应该能够接受我的答案。