项目需要使用gsoap 2.7 客户端访问java 生成的两个webservice, 一个是axis1 另一个是axis2 生成,生成的命名namespace很接近。
想用wsdl2h 生成两个头文件
wsdl2h -o p.h -np -Np http://XXXX/TmriOutNewAccess?wsdl
wsdl2h -o m.h -nM -NM http://XXXX/MidServer?wsdl
注:-n 和 -N是必须的,这样才能替换掉默认的ns_等命名空间前缀
然后将p.h的内容添加到m.h后面,在最后面添加。
然后用soapcpp2 生成源文件。
soapcpp2 -CLx -pJ m.h -I D:\xxxxx\gsoap\gsoap-2.7\gsoap\import
生成的文件目录如下: 会有3个nsmap,3个文件内容其实都是一样的,两个wsdl 命名空间是不一样的,
工具生成的是一样的就需要进行处理。
生成的xxxSoapBindingProxy.h 里面就是调用方法的代理,可以直接使用。
只需要对头文件里面的命名空间强制启用就可以了,不对的要修改(怎么知道是对不对,直接用工具单独生成一遍就知道了)
最后在的使用必须include 其中一个nsmap要不然编译不通过。
目录结构如下: