我们如何在C++/Linux中为Gsoap实现WSSE插件?
这个link没有提供所有信息。
问题是我必须在WSDL生成的头文件中包括什么才能使其与wsse兼容,以便soapcpp2 header.h生成足够的代码,以便我可以成功地编译wsseapi.c?
另外,如果可能,请提供实现wsse插件的有效示例代码(仅C++,没有C plz)?
最佳答案
要将#import "wsse.h"
自动添加到wsdl2h生成的头文件中(如果尚不存在)(wsdl2h使用WS-Policy检测到WS-Security要求),然后首先修改typemap.dat
使其包含以下三行:
[
#import "wsse.h"
]
然后(假设使用C++):
wsdl2h -Iimport -o service.h <your-wsdls-xsds-etc>
并确保wsdl2h使用修改后的typemap.dat
(如果在当前目录中就可以了),并且import选项指向带有import
的gsoap wsse.h
目录soapcpp2 service.h
soapC.cpp
,soapClient.cpp
(如果是客户端),soapServer.cpp
(如果是服务器),stdsoap2.cpp
,dom.cpp
,plugin/wsseapi.c
,plugin/smdevp.c
,plugin/mecevp.c
-DWITH_OPENSSL
-DWITH_DOM
-lssl
和-lcrypto
-DWITH_GZIP
编译并使用-lz
链接使用C进行编译时,请执行上述所有操作,但请使用wsdl2h选项
-c
并使用.c文件。请参阅gsoap软件包中的WSSE documentation和
gsoap/samples/wssedemo
示例,该示例显示了以几种可能的方式使用WS-Security的API调用,并告诉您如何注册插件等。