gSOAP名称空间前缀问题

时间:2011-03-15 14:48:31

标签: c++ soap gsoap

我注意到有几个人问过这个问题,但我找不到满意的答案。我正在使用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添加包含和声明

1 个答案:

答案 0 :(得分:3)

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

soap_omode(&amp; soap,SOAP_XML_DEFAULTNS);

我在http://cateof.wordpress.com/2010/09/21/default-namespace-gsoap-with/

上找到了它