cxf调⽤webservice服务时传递服务器验证需要的⽤户名密码cxf通过wsdl2java⽣成客户端调⽤webservice时,如果服务器端需要通过⽤户名和密码验证,则客户端必须传递验证所必须的⽤户名和密
码,刚开始想通过url传递⽤户名和密码,于是在wsdl⽂件中直接在<soap:address location 标记中添加加⼊⽤户名和密码,但是webservice 接收不到参数,此种⽅法⾏不通。后来在接⼝⽅法调⽤前⽤BindingProvider 得到RequestContext,在其中设置了请求需要的⽤户名和密码,接⼝顺利通过验证,执⾏成功,具体代码如下:
/**
* 根据给定的参数执⾏接⼝程序
*
* @param request
如何生成webservice客户端* @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;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论