在 WebSphere SOAP XOP 附件引用被替换为附件 base64 值
In WebSphere SOAP XOP attachments references are replaced with the attachment base64 value
我面临以下问题:
发送带有 MTOM 附件的 SAAJ 请求时,原始请求正文如下所示
<soapenv:Body>
<ns1:UploadMsgRq>
<ns2:Attachment><xop:Include href="cid:testfile.xml" xmlns:xop="http://www.w3.org/2004/08/xop/include"/></ns2:Attachment>
</ns1:UploadMsgRq>
</soapenv:Body>>
附件标签值转换为
<ns2:Attachment>PHN0YXJ0Pkdhc3Nlcjwvc3RhcnQ+</ns2:Attachment>
这是我的附件的 base64 值,我不希望发生这种情况,特别是附件已经添加为 MTOM 部分。
同样的代码也在 JBOSS.
上按需要工作
我应该对 websphere 进行特殊处理吗?
这是我找到的解决方案:
- 删除 SAAJ 客户端并从 WSDL 生成客户端,这将自动保持 XOP:Include 不变。
- 保留 SAAJ 客户端,但对于包含标签,您必须执行以下操作之一:a) 确保包含标签的内容
<xop:Include href="cid:testfile.xml" xmlns:xop="http://www.w3.org/2004/08/xop/include"> </xop:Include>
中包含 space 或 b) 动态添加它使用 addChildElement。对于 a 和 b 你的处理程序 - 如果有的话 - 不应该调用 context.getMessage() 否则它将再次生成 bas64。
我面临以下问题: 发送带有 MTOM 附件的 SAAJ 请求时,原始请求正文如下所示
<soapenv:Body>
<ns1:UploadMsgRq>
<ns2:Attachment><xop:Include href="cid:testfile.xml" xmlns:xop="http://www.w3.org/2004/08/xop/include"/></ns2:Attachment>
</ns1:UploadMsgRq>
</soapenv:Body>>
附件标签值转换为
<ns2:Attachment>PHN0YXJ0Pkdhc3Nlcjwvc3RhcnQ+</ns2:Attachment>
这是我的附件的 base64 值,我不希望发生这种情况,特别是附件已经添加为 MTOM 部分。 同样的代码也在 JBOSS.
上按需要工作我应该对 websphere 进行特殊处理吗?
这是我找到的解决方案:
- 删除 SAAJ 客户端并从 WSDL 生成客户端,这将自动保持 XOP:Include 不变。
- 保留 SAAJ 客户端,但对于包含标签,您必须执行以下操作之一:a) 确保包含标签的内容
<xop:Include href="cid:testfile.xml" xmlns:xop="http://www.w3.org/2004/08/xop/include"> </xop:Include>
中包含 space 或 b) 动态添加它使用 addChildElement。对于 a 和 b 你的处理程序 - 如果有的话 - 不应该调用 context.getMessage() 否则它将再次生成 bas64。