首页 文章

gsoap多个wsdls但只有一个代理类

提问于
浏览
1

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

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

我得到的问题是每当我尝试访问Service2 wsdl中定义的服务时,我都会遇到异常 . “System.Web.Services.Protocols.SoapException:服务器无法识别HTTP标头SOAPAction的值:

如果我只编译单个wsdl(仅编译Service2 wsdl),则访问Service2上的服务的代码相同 .

然后我检查Service1和Service2 wsdls . 它们具有相同的“targetNamespace” . 这就是为什么只创建了一个代理 .

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

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

任何帮助深表感谢 .

我用gsoap 2.8.11 btw

1 回答

  • 0

    这个问题已经很老了,所以我会非常快速地帮助随机的googlers(我在google搜索解决同样的问题时找到了它) . 如果需要更多细节,请询问 .

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

相关问题