WSDL2h.exe -d -o ibox.h -d是为了使用DOM
需要Import soap12.h wsa.h wsse.h duration.h dom.h
soapcpp2.exe -C -x -I<路径> ibox.h
修改gsoap目录下的wsa5.h,将如下内容注释
//gsoap SOAP_ENV service method-action: Fault http://www.w3.org/2005/08/addressing/soap/fault
int SOAP_ENV__Fault
( _QName faultcode, // SOAP 1.1
char *faultstring, // SOAP 1.1
char *faultactor, // SOAP 1.1
struct SOAP_ENV__Detail *detail, // SOAP 1.1
struct SOAP_ENV__Code *SOAP_ENV__Code, // SOAP 1.2
struct SOAP_ENV__Reason *SOAP_ENV__Reason, // SOAP 1.2
char *SOAP_ENV__Node, // SOAP 1.2
char *SOAP_ENV__Role, // SOAP 1.2
struct SOAP_ENV__Detail *SOAP_ENV__Detail, // SOAP 1.2
);
在soapcpp2前修改,具体需要Import的文件,在相应CPP文件头的注释中寻找,另外,所有使用到的C文件全部改为CPP文件
需要用到的文件如下
gsoap/dom.c
gsoap/stdsoap2.c
gsoap/stdsoap2.h
gsoap/custom/duration.c
gsoap/plugin/mecevp.c
gsoap/plugin/mecevp.h
gsoap/plugin/smdevp.c
gsoap/plugin/smdevp.h
gsoap/plugin/threads.c
gsoap/plugin/threads.h
gsoap/plugin/wsaapi.c
gsoap/plugin/wsaapi.h
gsoap/plugin/wsseapi.c
gsoap/plugin/wsseapi.h
如果需要使用代理类,在CPP.exe中使用 -i命令
int sk=soap_wsse_add_UsernameTokenDigest(soap,"UsernameZJ", "IBOX", "ibox12~3456");
用上函数加密即可
在工程设置中,需要加上
WITH_DOM WITH_OPENSSL
在lib中附加上OPENSSL加密lib和ssl加密lib和DLL