gSOAP C++:创建一个没有WSDL定义的自定义SOAP:Header
gSOAP C++: Create a custom SOAP:Header without WSDL definition
这里有一个目标:使用N个wsdl构建客户端应用程序,当一些SOAP请求启动时,添加一些特定的SOAP:Header(会话令牌和客户端数据照常)
这里我们有一些限制:
- 无法修改服务提供的Wsdl
- 生成的gSOAP代码也不能修改(IOW生成的代码包含伪代码SOAP_ENV_Header)
- 服务提供的Wsdl不包含任何headers定义(顺便说一下,它看起来很合理向WSDL添加SOAP隐式标头)
所以问题来了:如何将自定义生成的XML添加到请求中的SOAP:Header字段中?
ps。坦率地说,我通过gsoap插件找到了一个解决方案来解决这个问题,但我认为这有点"丑陋的黑客",我真的很欣赏更漂亮、更优雅的解决方案
好的,这里有合适的解决方案:
将#import"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;
};
在自定义SOAP头中使用DOM对象时,不要忘记在soapcp2执行中传递"-d"选项,否则会出现编译/链接问题。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在命名空间中定义函数还是限定函数
- 此代码是否违反一个定义规则
- 编译C++时未定义的引用
- 不同翻译单元中不可重载的非内联函数定义
- 为什么在定义函数之前先声明它
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- gSOAP C++:创建一个没有WSDL定义的自定义SOAP:Header
- gSOAP RESTful实现是否需要定义WSDL ?