Java 为什么附件方法不适用于Mule中的多部分消息?
对于我正在进行的项目,我必须处理带有附件的xml消息,即所谓的多部分消息,如下所示: 我的目标是删除附件,只保留xml作为有效负载 我一直在研究MuleMessage类和DefaultMuleMessage类中与附件相关的方法,但我无法让它起作用。我希望有人能给我一个提示,告诉我如何让这些方法发挥作用 当我从SoapUI发送带有附件的消息时,我可以使用getPayloadForLogging记录该消息,并查看它是一个具有多个Mime边界的多部分消息,如下所示:Java 为什么附件方法不适用于Mule中的多部分消息?,java,mule,attachment,multipart,Java,Mule,Attachment,Multipart,对于我正在进行的项目,我必须处理带有附件的xml消息,即所谓的多部分消息,如下所示: 我的目标是删除附件,只保留xml作为有效负载 我一直在研究MuleMessage类和DefaultMuleMessage类中与附件相关的方法,但我无法让它起作用。我希望有人能给我一个提示,告诉我如何让这些方法发挥作用 当我从SoapUI发送带有附件的消息时,我可以使用getPayloadForLogging记录该消息,并查看它是一个具有多个Mime边界的多部分消息,如下所示: ------=_Part_9_45
------=_Part_9_4557707.1396945202422
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <rootpart@soapui.org>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://microsoft.com/webservices/">
<soapenv:Header/>
<soapenv:Body>
</soapenv:Body>
</soapenv:Envelope>
------=_Part_9_4557707.1396945202422
Content-Type: image/x-png
Content-Transfer-Encoding: binary
Content-ID: <soapui32.png>
Content-Disposition: attachment; name="soapui32.png"
PNG
xxxxxxx
------=_Part_9_4557707.1396945202422--
当我通过它传递上述多部分消息时,我从getInboundAttachmentNames得到一个空集
当我尝试移除OutboundAttachment*时,它不会移除该附件
当我尝试使用以下方法创建带有附件的邮件时:
String payload = TestUtilities.readFile("testdata/test1.xml");
DefaultMuleMessage msg = new DefaultMuleMessage(payload, muleContext);
msg.addOutboundAttachment("plaatje", new File("testdata/test1.png"), "image/png");
MuleMessage reply = client.send("vm://test_01", msg, 5000);
它创建了一条消息,但没有附件。而且它不是一个多部分消息
我使用多部分消息的附件方法是否有误?我做错什么了吗
谢谢,
杰罗恩
当附件与其关联的消息一起接收到流中时,它被视为入站属性
因此,应该使用getInboundAttachmentNames打印附件名称
更新:
找到了。它仍然没有解决,这表明附件方法不适用于多部分/相关。谢谢您的回答,您是正确的。我先试过那个,但没用。然后我尝试了出境,看看这是否有什么不同,这就是为什么它最终在这里。我会在原来的问题中更正它。
String payload = TestUtilities.readFile("testdata/test1.xml");
DefaultMuleMessage msg = new DefaultMuleMessage(payload, muleContext);
msg.addOutboundAttachment("plaatje", new File("testdata/test1.png"), "image/png");
MuleMessage reply = client.send("vm://test_01", msg, 5000);