我想使用 gsoap 访问多个 Web 服务并将其全部组合成 1 个可执行文件。我遇到的问题是即使我在多个 wsdls 上执行 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 Header SOAPAction 的值:
如果我只编译单个 wsdl(只编译 Service2 wsdl),则访问 Service2 上的服务的代码相同。
然后我检查 Service1 和 Service2 wsdls。它们具有相同的“targetNamespace”。这就是为什么只创建 1 个代理。
我的问题是:我该如何解决这个问题?我需要访问 Service1.wsdl 和 Service2.wsdl 上的服务并将它们放入 1 个二进制文件中。
我已经阅读了 gsoap 手册并在 wsdl2h 和 soapcpp2 的命令行参数上尝试了几种组合,但没有运气。
任何帮助深表感谢。
我使用 gsoap 2.8.11 顺便说一句