2

我注意到有几个人问过这个问题,但我一直未能找到满意的答案。我正在使用 gSOAP 从 wsdl 文档创建 c++ 存根。问题是gSOAP 在发送soap 消息时将命名空间作为soap 方法名称的前缀。例如它<ns2:Inform></ns2:Inform>在需要发送时发送<Inform></Inform>

有谁知道如何解决这个问题?

编辑:

下面选择的答案起初对我不起作用,因为我使用的是 c++ 代理版本,但我所要做的就是使用以下代码创建我的服务对象,

exampleSOAPProxy service=exampleSOAPProxy(SOAP_XML_DEFAULTNS,SOAP_XML_DEFAULTNS);SOAP_XML_DEFAULTNS 是一个令人困惑的名称,因为它实际上并没有对所有内容使用默认名称空间,它只是从元素中删除名称空间前缀并将名称空间显式添加到每个元素。

在编译我的应用程序时,我需要将 -DWITH_SOAPDEFS_H 添加到我的编译/链接语句中。注意我需要在 /usr/local/include/ 中创建一个名为 soapdefs.h 的文件,因为它会在您设置 -DWITH_SOAPDEFS_H 标志时被导入。它只是一个头文件,用于向 stdsoap2.h 添加包含和声明

4

1 回答 1

3

您使用哪个版本的 gSOAP?如果它是 2.8.1 或更高版本,您可以尝试使用:

soap_omode(&soap, SOAP_XML_DEFAULTNS);

我在http://cateof.wordpress.com/2010/09/21/default-namespace-gsoap-with/上找到了它

于 2011-03-17T14:53:45.313 回答