我有一个 SOAP 服务,其中一个方法接受字符串作为参数。但是,期望该字符串是 XML。
当我调用此服务时,CXF 默认为我编码 XML,如下所示:
<ORM_O01><MSH>
尽管当我调用它时,我是这样调用它的:
<ORM_O01><MSH>
有办法关掉它吗?我希望 CXF 只发送我指定的内容,而不是编码版本。
我使用的是 CXF 2.7.8 和 JDK 1.7。
提前致谢。
最佳答案
我很确定这不是最好的方法,但它对我有用:
public class MyClass extends AbstractPhaseInterceptor< Message > {
public MyClass () {
super( Phase.PRE_STREAM );
addAfter( AttachmentOutInterceptor.class.getName() );
}
@Override
public void handleMessage( final Message message ) throws Fault {
message.put( "disable.outputstream.optimization", Boolean.TRUE );
final SimpleNsStreamWriter writer = (SimpleNsStreamWriter)StaxUtils.createXMLStreamWriter( message.getContent( OutputStream.class ) );
message.setContent( XMLStreamWriter.class, new DelegatingXMLStreamWriter( writer ) {
@Override
public void writeCharacters( final String text ) throws XMLStreamException {
System.out.println( "text -> " + text );
writer.writeRaw( text );
}
} );
}
关于java - CXF 编码嵌入 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035379/