GSoap工具的安装和使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.4GSOAP工具的安装和使用
7.4.1GSOAP安装
GSOAP工具可以在WIN和UNIX两个系统平台下运行,这就使我们的程序在跨平台上有了基础。
工具的安装包可浏览其主页下载。
本DEMO的开发使用的版本为gsoap_win32_2.7.9l,工具的运行环境是Windows系统。
图7.12 Windows下的GSOAP安装包
图7.13 LINUX或UNIX下的GSOAP安装包
设置系统环境变量,这样可以很方便的使用GSOAP工具,如下为GSOAP的两个工具,我们将他们设置到可以在DOS下可直接使用的程序。
图7.14 GSOAP两个工具程序
图7.15 GSOAP使用方法7.4.2生成客户端文件
Wsdl2h.exe的参数说明参见7.5.1节
图7.16 在DOS下使用wsdl2h.exe工具生成SendSMSClient.h文件
图7.17 生成成功
图7.18 生成的文件(短信为例)
Soapcpp2.exe工具的参数说明参见7.5.2 节
图7.19 根据.h生成客户端的文件
图7.20 生成成功提示信息
图7.21 生成的客户端文件
表7.1 生成文件的说明其他文件在项目中没有使用,在此不做介绍,如需了解参看网络资料。
7.4.3生成服务端文件
Wsdl2h.exe的参数说明参见7.5.1节
图7.22 创建WEB SERVICE的.h文件
图7.23 生成的文件Soapcpp2.exe工具的参数说明参见7.5.2 节
图7.24 生成WEB SERVICE服务端文件
图7.25 生成的服务端文件
7.5GSOAP工具的参数
soapcpp2.exe: gSOAP编译器,编译头文件生成服务器和客户端都需要的c/c++文件。
wsdl2h.exe: 编译wsdl文件生成c/c++头文件。
7.5.1wsdl2h.exe的使用
wsdl2h是将wsdl定义转换成.h文件的工具。
主要有一些选项:
-c代表转化成C代码。
-s代表不使用STL,取而代之需要在工程中包含stdsoap2.h和stdsoap2.cpp。
-o file代表指定输出文件名称。
通常情况下使用命令wsdl2h –s xxx.wsdl即可生成想要的.h文件
详细参数说明为:
Usage: wsdl2h [-a] [-c] [-d] [-e] [-f] [-g] [-h] [-I path] [-j] [-l] [-m] [-n na
me] [-N name] [-p] [-q name] [-r proxyhost:port] [-s] [-t typemapfile.dat] [-u]
[-v] [-w] [-x] [-y] [-z] [-_] [-o outfile.h] infile.wsdl infile.xsd http://www..
-a generate indexed struct names for local elements with anonymous types -c generate C source code
-d use DOM to populate xs:any and xsd:anyType elements
-e don't qualify enum names
-f generate flat C++ class hierarchy
-g generate global top-level element declarations
-h display help info
-Ipath use path to find files
-j don't generate SOAP_ENV__Header and SOAP_ENV__Detail definitions -l include license information in output
-m use xsd.h module to import primitive types
-nname use name as the base namespace prefix instead of 'ns'
-Nname use name as the base namespace prefix for service namespaces
-ofile output to file
-p create polymorphic types with C++ inheritance with base xsd__anyType -qname use name for the C++ namespace for all service declarations
-rhost:port
connect via proxy host and port
-s don't generate STL code (no std::string and no std::vector)
-tfile use type map file instead of the default file typemap.dat
-u don't generate unions
-v verbose output
-w always wrap response parameters in a response struct (<=1.1.4 behavior) -x don't generate _XML any/anyAttribute extensibility elements
-y generate typedef synonyms for structs and enums
-z generate pointer-based arrays for backward compatibility < gSOAP 2.7.6e -_ don't generate _USCORE (replace with UNICODE _x005f)
infile.wsdl infile.xsd http://www... list of input sources (if none: use stdin)
7.5.2soapcpp2.exe的使用
soapcpp2是生成源码的工具,从某种意义上来说,WebService和ICE相当的相像。
都是网络通信协议的封装方式,所不同的是WebService使用的是公开协议。
没有特殊选项的情况下,gsoap不需要依赖其他的链接库。
soapcpp2的主要选项有(注意区分大小写):
-C代表生成客户端代码。
-S代表生成服务端代码。
-L代表不生成soapClientLib/soapServerLib
-c代表仅生成c代码
-i代表使用Proxy
通常情况下使用命令soapcpp2 –S/-C –L -i xxx.h
详细参数说明为:
Usage: soapcpp2 [-1|-2] [-C|-S] [-L] [-a] [-c] [-d path] [-e] [-h] [-i] [-I path
;path;...] [-l] [-m] [-n] [-p name] [-s] [-t] [-v] [-w] [-x] [infile]
-1 generate SOAP 1.1 bindings
-2 generate SOAP 1.2 bindings
-C generate client-side code only
-S generate server-side code only
-L don't generate soapClientLib/soapServerLib
-a use value of SOAPAction HTTP header to dispatch method at server side
-c generate C source code
-dpath use path to save files
-e generate SOAP RPC encoding style bindings
-h display help info
-i generate service proxies and objects inherited from soap struct
-Ipath use path(s) for #import
-l generate linkable modules (experimental)
-m generate Matlab(tm) code for MEX compiler
-n use service name to rename service functions and namespace table
-pname save files with new prefix name instead of 'soap'
-s generate deserialization code with strict XML validation checks
-t generate code for fully xsi:type typed SOAP/XML messaging
-v display version info
-w don't generate WSDL and schema files
-x don't generate sample XML message files
infile header file to parse (or stdin)
7.5.3stdsoap2.h和stdsoap2.cpp文件说明
图7.26 stdsoap2.cpp和stdsoap2.h文件
这两个文件来自GSOAP工具目录中,也是我们需要的文件,在添加了soapcpp2生成的文件外还需要将这两个文件添加到我们工程的目录下。