2016-08-04 93 views
0

這裏頭是一個目標:使用N- WSDL的建立客戶端應用程序,並且當一些SOAP請求發起 - 添加一些特定SOAP:報頭(會話令牌和往常一樣客戶端數據)gSOAP的C++:創建自定義SOAP:無WSDL定義

在這裏,我們得到了一些限制:按服務提供

  • WSDL的不能被修改
  • 生成gSOAP的代碼 也不能被修改(IOW生成的代碼包含虛擬 SOAP_ENV_Header)
  • WSDL的按服務提供不包含任何 頭定義(並通過由它看起來合理 Adding SOAP implicit headers to WSDL

因此,這裏的問題:在請求頭字段:如何添加自定義生成的XML轉換成SOAP?

ps。坦白說我有一個解決方案解決通過gSOAP的插件的這個問題,但我覺得它有點「醜陋 - 哈克」,並真正體會到更加美麗和優雅的解決方案

回答

0

好,這裏是合適的解決方案做到這一點:

添加#進口「header.h」到typemap.dat:

 [ 
     #import "header.h" 
     ] 

在header.h的SOAP_ENV__Header結構的含量定義的用戶,通常與成員是指針和成員名稱合格:

struct SOAP_ENV__Header 
{ 
    type *prefix__name; 
}; 

如果你想「任意」標題,然後利用DOM:

#import "dom.h" 
struct SOAP_ENV__Header 
{ 
    xsd__anyType *dom; 
}; 

在使用DOM對象定製SOAP頭 - 不要忘記傳遞soapcpp2執行「-d」選項 - 否則會出現編譯/鏈接問題。