cxf 調用 webservice服務時傳遞 服務器驗證需要的用戶名密碼


cxf通過wsdl2java生成客戶端調用webservice時,如果服務器端需要通過用戶名和密碼驗證,則客戶端必須傳遞驗證所必須的用戶名和密碼,剛開始想通過url傳遞用戶名和密碼,於是在wsdl文件中直接在<soap:address location 標記中添加加入用戶名和密碼,但是webservice接收不到參數,此種方法行不通。后來在接口方法調用前用BindingProvider 得到RequestContext,在其中設置了請求需要的用戶名和密碼,接口順利通過驗證,執行成功,具體代碼如下:

 

/**
* 根據給定的參數執行接口程序
*
* @param request
* @return
*/
public ZPILOT01SSOCMMIF001CONResponse executeService(
ZPILOT01SSOCMMIF001CON request) throws Exception {

// 得到本地服務類
MIZPILOT01SSOCMMIF001CONOutSynService service = new MIZPILOT01SSOCMMIF001CONOutSynService();

// 得到接口的代理
MIZPILOT01SSOCMMIF001CONOutSyn stub = service
.getMIZPILOT01SSOCMMIF001CONOutSynPort();

// 設置訪問接口服務器的用戶名和密碼
BindingProvider bp = (BindingProvider) stub;
Map<String, Object> context = bp.getRequestContext();
context.put(BindingProvider.USERNAME_PROPERTY, XI_USER_NAME);
context.put(BindingProvider.PASSWORD_PROPERTY, XI_PASSWORD);

// 執行接口
ZPILOT01SSOCMMIF001CONResponse response = stub
.miZPILOT01SSOCMMIF001CONOutSyn(request);

// 返回響應
return response;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM