我有一个必须使用SOAP与SmartServer进行通信的应用程序,SmartServer是一个嵌入式设备。它接受的SOAP消息没有名称空间,但gSAOP使用名称空间发送它们。所以他们看起来像这样:
<ns3:List>
<ns3:iLonItem>
<ns3:xSelect></ns3:xSelect>
</ns3:iLonItem>
</ns3:List>
而不是:
<List>
<iLonItem>
<xSelect></xSelect>
</iLonItem>
</List>
我首先尝试将WSDL和XSD文件中的限定符更改为不合格,然后重新生成文件,并将不合格的更改为限定。但我得到的最好的是
<ns3:List>
<iLonItem>
<xSelect></xSelect>
</iLonItem>
</ns3:List>
哪个看起来更好,但列表仍然是命名空间。
然后我发现this网站声明我必须使用SOAP_XML_DEFAULTNS选项,所以我试过了。这在开始时没有用,但后来我发现我必须使用版本2.8.1而不是2.7.9l-0.2(Debian的标准版本)。所以我卸载了Debian版本并下载了2.8.1并复制了文件。但是现在当我尝试使用soapcpp2生成文件时,缺少以下文件:soapClient.cpp,soapClientLib.cpp,soapProxy.h以及许多* .req.xml和* .res.xml文件。我特别需要soapClient.cpp文件来编译我的项目。
我尝试了gsoap / bin目录中的标准二进制文件,并按照INSTALL.txt中的描述从gsoap目录重建src和wsdl文件,但这些文件都没有按照我的意愿运行。
有人能帮助我一点吗?
如果重要的话,我使用的是Debian Linux 5.0.8版(Lenny,旧稳定版)32位。
答案 0 :(得分:0)
关于你的问题:
...缺少以下文件:soapClient.cpp,soapClientLib.cpp,soapProxy.h以及许多* .req.xml和* .res.xml文件。我特别需要soapClient.cpp文件来编译我的项目。
根据链接http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc8(参见第9.1节) 它看起来好像你可能使用了错误的选项设置来调用soapcpp2。您确定没有使用-S开关指定“仅生成服务器端代码”吗?仅限客户端,您将使用-C。对于服务器端和客户端文件,不需要任何开关。此外,生成代理文件需要使用-i。
希望这有帮助, Ryyker