带有 mtom 附件的 SOAP 请求:在 [attachment] 中找不到 ID <id> 的附件

SOAP request with mtom attachment: No attachment for id <id> found in [attachment]

我尝试使用 SoapUI (5.3.0) 连接到 SOAP Web 服务。此外,还应发送一个 mtom 附件。但似乎发送附件时出现了一些问题 - 我总是收到以下错误消息作为响应:

No attachment for id someID found in [NameOfTheAttachmentFile.txt]

这是我所做的:

  1. 已启用请求 属性 'Enable MTOM'
  2. 添加了一个附件(在附件部分)
  3. 添加了一些cid:12345
  4. 在附件的 "Part" 列中选择了那个 cid

这是请求的一部分:

<ws:stream mimeType="text/plain" uuid="0815" filename="Example.txt" ...>
     <ws:documentData>cid:1234</ws:documentData>
</ws:stream>

正如我在 SoapUI 的 Raw 视图中看到的那样,文档是与请求一起发送的...任何想法是什么导致了问题?

我发现了问题。 即使我 "connected" 带有附件 SoapUI 的 cid 也没有在 mtmom Content-ID 部分中使用该 cid。所以最初使用cid:1234(并在附件的'Part'栏中选择)。但是在查看请求时,SoapUI 使用的是文件名:

Content-ID: <Example.txt>

现在改变其中之一

  • ContentID手动设置为1234(在附件部分)或
  • 使用文件名作为 cid:Example.txt 然后就可以了。

如果 Content-ID 是可选的或用 SoapUI 中现有的 cid 预填充,那将会很有帮助(类似于第 1 部分)。

我分享了这个,因为它可能会帮助任何人 运行 由于另一个原因而陷入同样的​​错误:

当服务器无法添加或创建附件时,同样的行为也会出现。在我的例子中,应该包含附件信息的输入流有一个 i/o 问题,无法正确使用。

通过不直接使用源的输入流(这是另一个服务的响应)解决了问题。

在服务器端调试 soap 部分对这方面绝对有帮助。