gSOAP C++:创建没有 WSDL 定义的自定义 SOAP:Header

gSOAP C++: Create a custom SOAP:Header without WSDL definition

这是一个目标:使用 N wsdl 构建客户端应用程序,当启动一些 SOAP 请求时 - 添加一些特定的 SOAP:Header(session 令牌和客户端数据照常)

这里我们有一些限制:

所以问题来了:How to add custom generated XML into SOAP:Header field in requests ?

ps。坦率地说,我得到了一个通过 gsoap 插件解决这个问题的解决方案,但我认为它有点 "ugly-hacky" 并且非常感谢更漂亮和优雅的解决方案

好的,这是正确的解决方案:

将#import "header.h" 添加到 typemap.dat:

      [
      #import "header.h"
      ]

header.h 中 SOAP_ENV__Header 结构的内容是 user-defined,通常具有指针成员和限定的成员名称:

struct SOAP_ENV__Header
{
   type *prefix__name;
};

如果你想要"arbitrary"headers,那么使用DOM:

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

在自定义 SOAP 中使用 DOM object 时 headers - 不要忘记在 soapcpp2 执行中传递“-d”选项 - 否则会有 compilation/linking问题。