2011-03-10 60 views
1

我有一個應用程序必須使用SOAP與SmartServer,這是一個嵌入式設備進行通信。它接受的SOAP消息沒有名稱空間,但是gSAOP使用名稱空間發送它們。因此,他們是這樣的:文件丟失與soapcpp2版本2.8.1

<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,old-stable)32位。

回答

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