我有幾個WSDL文件並使用gSOAP來創建C++代碼。gSOAP - SOAP-Action Header未設置
生成代碼中使用下列命令:
\path\to\wsdl2h -I \path\to\import\dir -j -N Service1Prefix -n Namespace1Prefix -o \path\to\output\header\dir\header1.h -q CPPNamespace1 -t \path\to\typemap.dat .\path\to\wsdl1.wsdl
等了剩餘的WSDL文件。 在gsoap文檔中,我讀到了需要一個空的env.h文件來處理序列化和錯誤處理。所以我爲此創建了一個空文件。
此後,我生成的C++代碼,每個與soap2cpp工具的WSDL文件:
\path\to\soap2cpp -1 -C -L -a -A -b -d \path\to\output\dir -i -j -I \path\to\import\dir -n -r -w -x \path\to\header\dir\header1.h
而且env.h
\path\to\soap2cpp -1 -C -L -b -d \path\to\output\dir -j -I \path\to\import\dir -penv -r -w -x \path\to\env.h
一切工作和我的C++代碼。
我把它放到我的代碼中,嘗試了一個方法,但提示出錯。
Error: WSWS3147E: Error: no SOAPAction header!
我嘗試了一些擺弄wsdl2h和soap2cpp的參數,但沒有得到滿意的結果。 當我刪除前綴的參數時,SOAPAction頭部被設置,但當響應包含一些名稱相同但內容不同的對象時,我會遇到問題。
一些搜索沒有爲我提供工作解決方案。 以前有人會遇到這個問題,可以提供一些幫助嗎?
每個WSDL中的每個方法都包含一個soapAction屬性。使用了 – MBU
gSOAP版本2.8.47。我會試試2.8.49。 將所有WSDL合併爲一個大頭文件給我們帶來了問題。 想象一下你的位置。 在一個WSDL中,位置包含街道地址,城市等。位於第二個WSDL中的 位置包含移動對象的緯度,經度和時間戳。 wsdl2h只保留此位置對象的第一次出現。 – MBU
您是說您的WSDL沒有唯一的名稱空間,導致命名衝突?這是一個非常糟糕的設計。這就是命名空間的用途。很高興聽到有辦法解決這個問題。 –