CXF远程接口调用 用户名密码校验的方法:

 

利用wsdl2java工具生成webservice的客户端代码
参照链接:
https://www.cnblogs.com/shaosks/p/9617401.html

 

身份验证代码:

package com...tests;

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;


public class ClientAuthInterceptor extends AbstractPhaseInterceptor<SoapMessage>{

    // 用户名
    private static final String NAME = "admin";
    // 密码
    private static final String PASSWORD = "admin";
    // 密钥
    private static final String SIGNSTR = "******************";

    public ClientAuthInterceptor() {
        super(Phase.PREPARE_SEND);
    }
     
    @Override
    public void handleMessage(SoapMessage message) throws Fault {
        // 消息头
        List<Header> headers = message.getHeaders();
        Document doc = DOMUtils.createDocument();
        Element auth = doc.createElement("auth");
        Element name = doc.createElement("username");
        Element password = doc.createElement("password");
        Element signstr = doc.createElement("signstr");
        name.setTextContent(NAME);
        password.setTextContent(PASSWORD);
        signstr.setTextContent(SIGNSTR);
        auth.appendChild(name);
        auth.appendChild(password);
        auth.appendChild(signstr);
        headers.add(new Header(new QName(""), name));
        headers.add(new Header(new QName(""), password));
        headers.add(new Header(new QName(""), signstr));
    }
}

 

main 方法测试:

 

posted @ 2021-03-05 15:16  Li&Fan  阅读(720)  评论(0编辑  收藏  举报