package org.fkjava.cfx.ws.util;
import java.util.List;
import javax.xml.namespace.QName;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* 客户端的Out拦截器,给soap消息加上header部分,带上用户名和密码
* @author Kevin
*
*/
public class AddHeaderInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
private String userId;
private String userPassword;
public AddHeaderInterceptor(String userId, String userPassword) {
// 在soap消息准备发送之前调用(形参已经转化为xml片段)
super(Phase.PREPARE_SEND);
this.userId = userId;
this.userPassword = userPassword;
}
@Override
public void handleMessage(SoapMessage msg) throws Fault {
List<Header> headers = msg.getHeaders();
/*
* <authHeader>
* <userId>XXX</userId>
* <userPassword>XXX</userPassword>
* </authHeader>
*/
Document document = DOMUtils.createDocument();
Element authHeader = document.createElement("authHeader");
Element userId = document.createElement("userId");
userId.setTextContent(this.userId);
Element userPassword = document.createElement("userPassword");
userPassword.setTextContent(this.userPassword);
authHeader.appendChild(userId);
authHeader.appendChild(userPassword);
// 把以上程序员构造的header部分添加到soap消息中
headers.add(new Header(new QName("header"), authHeader));
}
}
4.客户端自定义的out拦截器,带上用户名和密码:拦截器
最新推荐文章于 2024-01-21 15:32:34 发布