weblogic上部署的webservice通信添加soap头总结

我们项目里面用到了webservice服务,用axis2做的,比如两个系统在使用webservice通信的时候,需要在soap里面添加一个soap头,里面有username和password,用于安全校验。不过最近项目开发遇到一个难题,就是webservice服务端总是报用户名密码错,不过最后还是解决出来了,在这里与大家分享一下经验,这是小生第一次发文章,请不要喷水, :oops: 谢谢...
我们写程序的时候一般都是使用Eclipse编程,使用的tomcat服务,但是我们的项目是发布在weblogic上面的,问题就出现在这里,weblogic有自己的特性,我们在tomcat里面添加soap头的代码如下:

RPCServiceClient serviceClient = new RPCServiceClient();
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("namespace", "");
SOAPFactory sfac = OMAbstractFactory.getSOAP12Factory();
SOAPHeaderBlock omUserName = sfac.createSOAPHeaderBlock("username", omNs) ;
omUserName.setText(userName);
SOAPHeaderBlock omPassword = sfac.createSOAPHeaderBlock("password", omNs) ;
omPassword.setText(password);
serviceClient.addHeader(omUserName);
serviceClient.addHeader(omPassword);

这上面这个soap头从tomcat里面发出去过后,发过去的XML里面的username和password的namespace都存在,但是部署在weblogic上面后,再发送xml给服务端的时候,username里面的namespace存在,但是password里面就没有namespace了,服务器端获取不到password,一顿报用户名或密码错误 :evil: 。后来我们使用各种添加soap头的方式,各种不好使 :cry: ,直到我们使用了一种最不像成功的方式——添加stringheader。代码如下:

QName headerUn= new QName("namespace","username","");
QName hreadrps= new QName("namespace","password","");
serviceClient.addStringHeader(headerUn, userName);
serviceClient.addStringHeader(hreadrps, password);

开始我们把这个soap头的xml打印出来看了下,感觉与之前的格式差别很大,没对这种方式报多大的信心,结果还真是只有这一种方式好使,哎。不知道有没有精通webservice通信的老师,来给小生解解迷惑呀 :idea: ,刚入道不久,还请各位海涵......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值