使用CXF拦截器,我想在发送到服务器的xml中添加一些节点。我创建了一个拦截器(如下所示),它将消息作为DOM节点接收,修改并将其写回消息对象。
不幸的是,代码并没有像预期的那样工作 - 发送到服务器的XML不包含“magicWord”。在我看来,我使用了错误的阶段。
因此问题是:如何使用org.w3c.dom.Node语法修改出站web服务请求?
不幸的是,代码并没有像预期的那样工作 - 发送到服务器的XML不包含“magicWord”。在我看来,我使用了错误的阶段。
因此问题是:如何使用org.w3c.dom.Node语法修改出站web服务请求?
package dummy;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
class DummyInterceptor extends AbstractPhaseInterceptor {
String magicWord = "abc";
public DummyInterceptor() {
super(Phase.PRE_PROTOCOL);
}
public void handleMessage(Message message) {
Document document = (Document) message.getContent(Node.class);
NodeList nodes = document.getElementsByTagName("wsse:Security");
if (nodes.getLength() == 1) {
Node wsseSecurityNode = nodes.item(0);
wsseSecurityNode.appendChild(document.createTextNode(magicWord));
}
message.setContent(Node.class, document);
}
}