Proxy gsoap有多个WSDL,但只有一个代理类

Proxy gsoap有多个WSDL,但只有一个代理类,proxy,wsdl,gsoap,Proxy,Wsdl,Gsoap,我想使用gsoap访问多个web服务,并将其全部合并到一个可执行文件中。我遇到的问题是,即使我在多个wsdl上执行wsdl2h,然后使用soapcpp2编译头,也只生成了一个代理对象。以下是我使用的命令行参数: wsdl2h -o header.h -ttypemap.dat -s http://services.web.com/WebService/Service1.asmx?WSDL http://services.web.com/WebService/Service2.asmx?WSDL

我想使用gsoap访问多个web服务,并将其全部合并到一个可执行文件中。我遇到的问题是,即使我在多个wsdl上执行wsdl2h,然后使用soapcpp2编译头,也只生成了一个代理对象。以下是我使用的命令行参数:

wsdl2h -o header.h -ttypemap.dat -s http://services.web.com/WebService/Service1.asmx?WSDL http://services.web.com/WebService/Service2.asmx?WSDL
soapcpp2 -pMy  -i -wx -C -Igsoap-2.8/gsoap/import header.h
我遇到的问题是,每当我尝试访问Service2WSDL中定义的服务时,就会出现异常。System.Web.Services.Protocols.SoapException:服务器未识别HTTP标头SOAPAction的值:

如果我只编译单个wsdl,那么访问Service2上的服务的代码也可以工作,而只编译Service2WSDL

然后检查Service1和Service2 wsdl。它们具有相同的targetNamespace。这就是为什么只创建一个代理

我的问题是:我如何解决这个问题?我需要访问Service1.wsdl和Service2.wsdl上的服务,并将它们放入1个二进制文件中

我已经阅读了gsoap手册并尝试了wsdl2h和soapcpp2的命令行参数的几种组合,但没有成功

非常感谢您的帮助


顺便说一句,我使用的是GSOAP2.8.11,这个问题已经很老了,所以我会很快帮助随机搜索者,我在搜索相同问题的解决方案时找到了它。如果需要更多的细节,尽管问

无论如何,解决方案是: 使用提供名称空间名称的-q参数多次调用wsdl2h,并每次生成唯一的.h文件。 然后,在每个头文件上调用soapcpp2——这将为每个头文件生成代理文件,并封装在名称空间声明中