初始材料:WSDL文件,gsoap_2.8.40,浏览器(查阅用....)
目的材料:调用webservice的接口(WS-Security验证)
步骤:
1.通过gsoap生成接口代码文件
wsdl2h.exe -t typemap.dat -s -o temp.h source.wsdl
2.关键的一步,因为这步让我卡住好几天,压力贼大
修改temp.h文件引入WS-Security需要的东西
#import "wsse.h"
3.生成接口代码文件
soapcpp2.exe -j -x -C -L temp.h -I K:\import
4.将生成的代码文件和以下几个文件引入项目,具体位置可在gsoap目录、plugin目录、import目录找:
image.png
注意!
有一些文件如smdevp.c, mecevp.c, wsseapi.c,需要把后缀名改成.cpp,此处的坑是:stdsoap2.h :expected specifier-qualifier-list before 'XXX'
5.编译选项加上 -DWITH_DOM 和 -DWITH_OPENSSL ,此处的坑我是找不到头文件,编译选项也要加上头文件所在目录。不明白可以复习一下-I,-L,-l三个的区别。
6.调用接口的地方引入
#include "soapH.h"
#include "XXXServiceHttpBindingProxy.h"
#include "XXXServiceHttpBinding.nsmap"
#include "wsseapi.h"
7.调用接口之前调用:
soap_wsse_add_UsernameTokenText(soap, "Id", "username", "password");
网友评论