首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axis2 2/公理处理SOAP MTOM/非MTOM附件

Axis2 2/公理处理SOAP MTOM/非MTOM附件
EN

Stack Overflow用户
提问于 2010-10-05 13:31:38
回答 1查看 1.4K关注 0票数 2

在环顾四周并尝试不同的建议解决方案后,我写了这个。从MTOM/non消息中提取二进制数据的2种最常见的解决方案是:

  1. 检索OMText节点,并使用其中存在的dataHandler实例
  2. 查找包含‘href’属性的OMElement节点。获取‘cid:xxxxx’值,并使用‘xxxxx’部分从消息上下文实例中的附件映射中检索附件。

我面临的问题是,我的客户机指示SOAP响应消息是MTOM,我使用消息上下文实例的isDoingMTOM()方法确定了这一点。但是,没有包含‘href’属性的OMElement节点。在打印SOAP信封时,我发现二进制数据在正文中是内联的。因此,我尝试了OMText节点方法来获取数据,但是每当我尝试将OMElement转换到相应的OMText节点时,我都会得到一个classCastException。

有人能指出我错过了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2010-12-13 15:21:17

如何打印出SOAPEnvelope公理对象?如果您正在调用toString()方法,这会产生一些不幸的副作用。具体来说,toString()方法将导致Axiom解析底层SOAP消息,并构建Axiom对象图(OMElement节点等)。表示原始XML的。在构建对象图时,Axiom可能会稍微修改XML的表示:

下面是Axiom网站上关于toString():http://ws.apache.org/axiom/userguide/ch05.html#d0e1111行为的链接

特别是对于MTOM消息,在Axiom构建对象图时,它将用原始二进制的Base64编码文本表示替换指向原始二进制MTOM附件的元素--有效地消除了使用MTOM的任何好处(MTOM允许您放弃膨胀二进制文件大小的Base64编码过程)。如果查看调试器中的Axiom对象图(因为这样也调用了toString()方法),元素的替换也将发生。

您是否使用亚行作为XML绑定框架?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3864089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档