这几天遇到一个需求,要调用cxf发布的一个webservice,但客户端调用时需要传入soapenv:Header参数,xml格式如下:
<soapenv:Envelope >
<soapenv:Header>
<tns:RequestSOAPHeader xmlns:tns="http://webservice.xxx.com/" >
<tns:user>abc</tns:user>
<tns:password>c7bb9ff815174523e3d9234</tns:password>
</tns:RequestSOAPHeader>
</soapenv:Header>
<soapenv:Body>
消息体...
</soapenv:Body>
</soapenv:Envelope>
其中的难点是怎么传入soapenv:Header信息。因为客户端系统时间比较久,发现用cxf的方式调用可以成功,但要增加jar包,故放弃,继后考虑到原系统用的axis故在网上查了下实现方式。
1,wsdl2java生成客户端代码。其axis的写法是:
java -classpath %AXIS_CLASSPATH% org.apache.axis.wsdl.WSDL2Java -o D:\backup -p com.cn.sany.bmp http://bpm.abc.com/45rtyFGHqw/sys/webservice/loginqwWebserviceService?