gsoap 客户端使用多个WSDL

项目需要使用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要不然编译不通过。

目录结构如下: