CXF 添加soap 头部信息

CXF版本为3.1.3,访问.net接口,需要在头部添加用户名和密码。

  <soap:Header>
    <AuthorizationSoapHeader xmlns="http://tempuri.org/">
      <UserName>string</UserName>
      <Password>string</Password>
    </AuthorizationSoapHeader>
  </soap:Header>


1:首先使用wsdl2java.bat生成相应的代码


2:新增拦截器。

import java.util.List;
import javax.xml.namespace.QName;

import org.apache.cxf.binding.soap.SoapHeader;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * Created by liruilin on 2015/10/20.
 */
public class AddSoapHeader extends AbstractSoapInterceptor {

    public AddSoapHeader() {
        super(Phase.WRITE);
    }


    /**
     * 处理soap信息
     * @param message soap信息
     * <P>作成者:cyf
     */
    public void handleMessage(SoapMessage message) throws Fault {
        // SoapHeader部分待添加的节点
        QName qName = new QName("AuthorizationSoapHeader");

        Document doc = DOMUtils.createDocument();
        // 验证用户名
        Element id = doc.createElement("UserName");
        id.setTextContent("0001");
        // 验证密码
        Element pwd = doc.createElement("Password");
        pwd.setTextContent("123");

        Element root = doc.createElementNS("http://tempuri.org/","AuthorizationSoapHeader");
        root.appendChild(id);
        root.appendChild(pwd);
        // 创建SoapHeader内容
        SoapHeader header = new SoapHeader(qName, root);
        // 添加SoapHeader内容
        List<Header> headers = message.getHeaders();
        headers.add(header);
    }

}

3:测试。TKService 和TKServiceSoap是用WSDL2JAVA.bat 生成的。

package com.miaoyou.demo2;

import com.miaoyou.demo1.TKService;
import com.miaoyou.demo1.TKServiceSoap;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;

/**
 * Created by liruilin on 2015/10/21.
 */
public class Test3 {

    public static void main(String[] args) {
        System.out.println("Invoking BoatLineQuery...");
        String dmcode="gzkl";
        TKService ss = new TKService();
        TKServiceSoap serviceSoap=ss.getTKServiceSoap();
        Client client= ClientProxy.getClient(serviceSoap);
        client.getOutInterceptors().add(new AddSoapHeader());
        String _boatLock__return = serviceSoap.boatLineQuery(dmcode,"");
        System.out.println(_boatLock__return);

    }
}
所需要的JAR

哇喔哇喔



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值