一.下载gsoap文档
官网下载地址:http://www.cs.fsu.edu/~engelen/soap.html
下载相应的gsoup压缩文档,解压之后路径gsoap-2.8\gsoap\bin\win32下有需要的可执行文件。这两个文件时windows下生成的可执行文件。
wsdl2h.exe wsdl2h.exe,根据wsdl生成一个头文件(比如A.h),这是个临时文件,下一步骤执行完后自动删除即可
soapcpp2.exe soapcpp2.exe是可以生成构建C++ SOAP客户端所需的C++源码的预编译器,该预编译器的输入参数是一个标准的C/C++头文件,这个头文件可以由WSDL解析器根据相关的WSDL文档自动生成
总体认识,wsdl2h.exe根据参数从网络上下载与协议相关的wsdl数据,生成wsdl对应协议的头文件。 soapcpp2.exe根据头文件生成协议具体实现的api接口,这些接口都对应的调用了xml解析,封装以及数据的网络传输
二.生成相应的头文件
1从gsoap-2.8\gsoap目录下拷贝typemap.dat文件到目录gsoap-2.8\gsoap\bin\linux386或gsoap-2.8\gsoap\bin\win32,重命名为onvif.dat。
2打开onvif.dat,把第91行的注释号#去掉。(为了映射WSDL中的xsd__dateTime到C/C++中的timeval类型),把第97行最前面加上注释号#。(为了不映射WSDL中的xsd__duration到C/C++中的LONG64类型,而映射为char *类型)
3在onvif.dat文件末尾添加下列语句(见onvif核心规范5.3节):
wstop =http://docs.oasis-open.org/wsn/t-1
wsnt =http://docs.oasis-open.org/wsn/b-2
wsrf-r =http://docs.oasis-open.org/wsrf/r-2
wsrf-bf =http://docs.oasis-open.org/wsrf/bf-2
wsd =http://schemas.xmlsoap.org/ws/2005/04/discovery
tt =http://www.onvif.org/ver10/schema
tds =http://www.onvif.org/ver10/device/wsdl
trt =http://www.onvif.org/ver10/media/wsdl
timg =http://www.onvif.org/ver20/imaging/wsdl
tev =http://www.onvif.org/ver10/events/wsdl
tev1 =