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 方法测试:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM