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