我们使用WAS 8.5.5提供的SAAJ实现准备多部分SOAP请求,它看起来是正确的,直到我们不添加作为一部分发送的XOP链接引用附件:
<xop:Include href="cid:my_attachment_id" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
一旦将此类链接添加到信封中,它就会被SAAJ替换为base64编码的附件内容。因此,附件以二进制和base64格式发送两次。
知道如何预防这种意想不到的内联吗?
UPD试图跟进评论
我们填充类型为base64Binary的名为“data”的元素,然后使用wireshark检查请求。假设我们有2个案例:
1)如下所示的非XOP链接按原样发送,由wireshark确认
<data><link href="cid:my_attachment_id"/></data>
2)XOP链接最初形成为
<data><xop:Include href="cid:my_attachment_id"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/></data>
根据wireshark翻译成
<data>PGh0dHA6Ly9mb28uY29tPg0KW2Zvb10oaHR0cDov....</data>
此处“data”元素的内容正是由给定content-id(my_attachment_id)标识的base64编码附件。