知识准备
gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于 gSOAP具 有相当不错的兼容性,通过gSOAP,我们就可以调用由Java, .Net, Delhpi, PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。gSOAP的主页是:http://sourceforge.net/projects/gsoap2
下载解压后,可以在gsoap\bin\win32里 找到wsdl2h.exe和soapcpp2.exe(另外还有linux和mac版本)。
wsdl2h.exe的作用是根据WSDL生成C/C++风格的头 文件
soapcpp2.exe的作用是根据头文件自动生成调用远程 SOAP服务的客户端代码(称为存根:Stub)和提供SOAP服务的框架代码(称为框架:Skeleton),另外它也能从头文件生成WSDL文件。
gsoap\stdsoap2.cpp则是gSOAP的核心代码,要使用 gSOAP只要在项目里包含这个文件以及由soapcpp2.exe生成的代码即可。另外还有个stdsoap2.c,内容与stdsoap2.cpp一 模一样,用于纯C项目。
将gsoap-2.8压缩包上传到服务器,解压到/opt/gsoap-2.8目录,进入目录,执行如下的命令编译出wsdl2h,soapcpp2可执行程序
编译指令
./configure --prefix=/opt/gsoap(你自己的选择的安装路径)
sudo make
make install
cd /opt/gsoap/bin
这个之后,我们需要将/opt/gsoap-2.8/gsoap/typemap.dat,以及同一级目录下的文件夹import ,custom, plugin拷贝到/opt/gsoap/bin目录下
在当前目录存在wsdl2h,soapcpp2可执行程序,通过如下两个指令生成代码
[root@localhost test]# ./wsdl2h -o onvif.h -c -s -t ./typemap.dat http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl
生成文件onvif.h
[root@localhost test]# ./soapcpp2 -c onvif.h -x -L -I./custom -I./plugin -I./import
最终的目录如下:
[root@localhost test]# ls
custom import plugin soapClient.c soapServer.c wsdd.nsmap
DeviceBinding.nsmap MediaBinding.nsmap RemoteDiscoveryBinding.nsmap soapcpp2 soapStub.h wsdl2h
DeviceIOBinding.nsmap onvif.h soapC.c soapH.h typemap.dat