【问题标题】:gsoap multiple wsdls but only one proxy classgsoap 多个 wsdls 但只有一个代理类
【发布时间】:2012-12-01 05:59:24
【问题描述】:

我想使用 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 顺便说一句

【问题讨论】:

    标签: proxy wsdl gsoap


    【解决方案1】:

    这个问题已经很老了,所以我会很快帮助随机的谷歌用户(我在谷歌搜索相同问题的解决方案时发现了它)。如果需要更多详细信息,请询问。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2022-10-25
      相关资源
      最近更新 更多