gsoap - SOAP标头中的WS-Addressing元素

时间:2009-03-04 02:19:21

标签: soap wsdl header gsoap ws-addressing

我需要在我的Soap头中添加WS Addressing(我正在使用gsoap框架)。 有没有办法自动添加?我查了gsoap文档,但没有找到任何相关的信息。 所以我现在手动将WS-Addressing添加到我的SOAP_ENV_Header中,如下所示

struct SOAP_ENV__Header
{
   mustUnderstand _wsa__MessageID wsa__MessageID 0;
   mustUnderstand _wsa__RelatesTo *wsa__RelatesTo 0;
   mustUnderstand _wsa__From *wsa__From 0;
   mustUnderstand _wsa__ReplyTo *wsa__ReplyTo 0;
   mustUnderstand _wsa__FaultTo *wsa__FaultTo 0;
   mustUnderstand _wsa__To wsa__To 0;
   mustUnderstand _wsa__Action wsa__Action 0;
}; 

但我想自动生成它,因为我必须向Soap Header添加一些其他结构,这些结构是从我的wsdl / xsd文件自动生成的。

由于

2 个答案:

答案 0 :(得分:1)

您可以在typemap.dat中定义SOAP_ENV_Header,如下所示:

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和选项“-t”指定外部typemap.dat。

答案 1 :(得分:0)

为gSoap使用ws寻址插件。