【发布时间】:2011-08-02 16:36:09
【问题描述】:
我想修改一个传出的 SOAP 请求。 我想从信封的正文中删除 2 个 xml 节点。 我设法设置了一个拦截器并将生成的消息集的字符串值设置到端点。
但是,以下代码似乎无法正常工作,因为未按预期编辑传出消息。有没有人有一些关于如何做到这一点的代码或想法?
public class MyOutInterceptor extends AbstractSoapInterceptor {
public MyOutInterceptor() {
super(Phase.SEND);
}
public void handleMessage(SoapMessage message) throws Fault {
// Get message content for dirty editing...
StringWriter writer = new StringWriter();
CachedOutputStream cos = (CachedOutputStream)message.getContent(OutputStream.class);
InputStream inputStream = cos.getInputStream();
IOUtils.copy(inputStream, writer, "UTF-8");
String content = writer.toString();
// remove the substrings from envelope...
content = content.replace("<idJustification>0</idJustification>", "");
content = content.replace("<indicRdv>false</indicRdv>", "");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(content.getBytes(Charset.forName("UTF-8")));
message.setContent(OutputStream.class, outputStream);
}
【问题讨论】:
标签: java web-services cxf interceptor