2011-11-09 36 views
1

我正在嘗試使用gSoap庫與WSHttpBinding與WCF服務器對話。我似乎遇到了gSoap的WS-Addressing插件的問題。當我啓用WS-Addressing插件時,通過使用#import「wsa5.h」,我無法再編譯。現在,soapC.cpp中存在未解析的符號。第一個錯誤是在soap_getelement(soap *,int *)中。錯誤是SOAP_TYPE_ wsa5 _IsReferenceParameter。這是我第一次嘗試使用gSoap。任何建議表示讚賞。嘗試使用gSoap與WCF和WSHttpBinding

gSOAP的版本2.8.4

+0

我認爲我的問題與此有關... http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messageversion.soap12wsaddressing10.aspx – IslandCow

回答

1

你可以做的是WSA部件添加到您的類型表文件,然後在你的wsdl2h命令-t參數指定。

即:

wsdl2h -o target.h -t EditedTypemap.dat target.wsdl 

您可以直接從您的gSOAP的目錄複製標準Typemap.dat,所以它看起來像下面編輯:

wsa = <http://schemas.xmlsoap.org/ws/2004/08/addressing> 

SOAP_ENV__Header =\ 
#import "wsa.h"\n\ 
struct SOAP_ENV__Header\n\ 
{\n\ 
    mustUnderstand _wsa__MessageID wsa__MessageID 0;\n\ 
    mustUnderstand _wsa__RelatesTo * wsa__RelatesTo 0;\n\ 
    mustUnderstand _wsa__From *  wsa__From  0;\n\ 
    mustUnderstand _wsa__ReplyTo * wsa__ReplyTo 0;\n\ 
    mustUnderstand _wsa__FaultTo * wsa__FaultTo 0;\n\ 
    mustUnderstand _wsa__To   wsa__To  0;\n\ 
    mustUnderstand _wsa__Action  wsa__Action 0;\n\ 
}; 

然後重新運行wsdl2h正如我上面提到。希望這對你有用! gSOAP是一個偉大的工具包,只是有點挑剔。

+0

此外,如果這不起作用爲你,你可以看看你的gSOAP目錄 'gsoap-2.8/gsoap/doc/wsa/html/wsa_0.html' 在我的情況下,因爲我使用gSOAP 2.8。本文爲使用WSA插件提供了明確的指導,幷包含samlpe代碼。 –

+0

謝謝!但是,該代碼已經存在於我的soapStub.h文件中,而未修改我的typemap.dat。我採取了一個數據包捕獲,看起來wsaw命名空間中有一些標籤來自WCF端。我仔細看了看,它指的是2006/05的規格:( – IslandCow

+0

啊,我明白了,在開發gSOAP客戶端和服務器時我會記住這一點,而且我沒有成功編譯gSOAP 2.8 calC++樣本,所以我會從這裏深入研究gSOAP,如果我發現任何可能對你有用的東西,我會確保你PM。祝你好運! –

相關問題