我使用的是Mule ESB 1.3版,作为SOAP引擎,它有AXIS1.4 embedded.Mule使用下面的代码将流作为ws附件发送。我检查过他们仍然在新版本中使用它。
File temp = File.createTempFile("soap", ".tmp");
temp.deleteOnExit(); // TODO cleanup files earlier (IOUtils
// has a file tracker)
FileOutputStream fos = new FileOutputStream(temp);
msgContext.getRequestMessage().writeTo(fos);
fos.close();
contentLength = (int)temp.length();
payload = new FileInputStream(temp);
此处带附件的soap消息的内容保存在文件中,此文件的句柄将提供给系统的其余部分。我没有得到这背后的逻辑。为什么不使用
的javax.activation.DataHandler
输入流,而是首先保存然后从文件中读取消息。据我所知,Axis1.4本身并没有那样工作。我在这里错过了什么吗?
经过一些修改以制作mule发送文件后,我遇到了轴和mule客户端生成的消息之间的差异。除了这行生成的消息是相同的。 Mule生成此标题:
Content-Type:multipart / related; type =“application / xop + xml”
Axis生成此标题是正确的:
Content-Type:multipart / related; type =“application / xop + xml”;开始= “< 2F4952A019F62AB6704A0C06DB5E8AA1>” 中; start-info =“text / xml; charset = utf-8”; .boundary = “---- = _ Part_0_1836994030.1387284330292”
造成这种差异的原因是什么?