在环顾四周并尝试不同的建议解决方案后,我写了这个。从MTOM/non消息中提取二进制数据的2种最常见的解决方案是:
我面临的问题是,我的客户机指示SOAP响应消息是MTOM,我使用消息上下文实例的isDoingMTOM()方法确定了这一点。但是,没有包含‘href’属性的OMElement节点。在打印SOAP信封时,我发现二进制数据在正文中是内联的。因此,我尝试了OMText节点方法来获取数据,但是每当我尝试将OMElement转换到相应的OMText节点时,我都会得到一个classCastException。
有人能指出我错过了什么吗?
发布于 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绑定框架?
https://stackoverflow.com/questions/3864089
复制相似问题