基于gSOAP的WebService开发指导说明文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于gSOAP的WebService

开发指导说明书

1简介

1.1目的

本文通过给出gSOAP库的基本使用样例,帮助开发人员进行WebService相关的开发

1.2范围

本文只包含gSOAP库C++版本的基本使用样例,不包含其他高级使用或C版本的使用方式

1.3名词解释

1.4参考资料

2准备工作

2.1gSOAP库

很显然,要想基于gSOAP库开发WebService应用,你需要首先获取gSOAP库。

gSOAP库是一个开源库,你可以在以下网址进行下载:

/project/showfiles.php?group_id=52781

如果链接失效,也可以去一个介绍gSOAP的网站上查看最新下载地址:

/~engelen/soap.html

本文所用的版本为(soapcpp2):

下载下来以后解压缩,你会得到这么一个目录:

其中gsoap目录有以下结构:

注意这两个文件:stdsoap2.h和stdsoap2.cpp,我们编写gSOAP程序的时候是需要它们的。还要注意的是bin\win32目录下的两个可执行文件:soapcpp2.exe和wsdl2h.exe,目前我们只需要soapcpp2.exe。

也就是说,要使用gSOAP,我们需三个文件:

解压目录\gsoap-2.8\gsoap\ stdsoap2.h

解压目录\gsoap-2.8\gsoap\ stdsoap2.cpp

解压目录\gsoap-2.8\gsoap\bin\win32\ soapcpp2.exe

使用gSOAP不需要在程序中添加额外的库,而是要通过工具生成并包含额外的文件。接下来,我们通过一个实例去了解如何使用gSOAP提供的这三个文件。

3创建一个WebService服务端工程

gSOAP使用了代码生成器帮助我们生成一些辅助性的框架与类,所以我们想要使用gSOAP,则需要做一些额外的工作。

下面我们就从零开始构建一个使用gSOAP的服务端工程。

3.1新建一个工程

这一步没什么难度,使用VS直接新建一个工程即可。

我们可以建立任意的C++工程,为了可以未来和Qt进行结合,我们新建一个QtApplication:

解决方案名字,工程名,类名与Widget类型不重要,我们可以随意决定。

于是,我们创建的工程树与目录结构如下:

为了使用gSOAP,我们需要向我们的工程目录下拷贝一些必要的文件:

它们原本所在的地方为:

解压目录\gsoap-2.8\gsoap\ stdsoap2.h

解压目录\gsoap-2.8\gsoap\ stdsoap2.cpp

解压目录\gsoap-2.8\gsoap\bin\win32\ soapcpp2.exe

3.3写WebService接口函数

gSOAP可以使我们像是用本地函数一样调用WebService,所以我们首先要做的就是定义WebService接口函数,新建一个头文件,名字随意(我们使用soapInterface.h),然后按照以下格式书写函数:

注意:前三行的注释是必要的,并且必须符合语法规则,其中ns表示的是WebService 的基本命名空间,默认ns即可,而冒号后面,则是以下含义:

●//gsoap ns service name: WebService的名字,随意即可,它只关系到最

终生成的文件和类的名字,只要符合其实际的含义,名字随意

●//gsoap ns service protocol: WebService所用协议,默认SOAP即可

●//gsoap ns service style:WebService类型,默认rpc即可,表示使用远

程调用

●事实上,只有第一行注释是有意义的,剩下两行都如果不存在则会使用默认值

——那其实就是我们定义的值,但是为了更加清晰,最好可以使用全部的三行

注释(事实上,完整的注释有更多行,但是尚未清楚其意义。)

然后,包含必要的头文件,使得函数声明合法。(例如,为了使用std::string,我们需要包含string头文件)

注意:不支持Qt类,不支持const引用参数,不支持标准库中的容器。

最后,就是一条一条地定义WebService方法了,其中,方法名,参数与返回值要符合以下规则:

●返回值必须是int

●函数名必须要以基本命名空间开头,命名空间后面必须要加两个下划线,两个

下划线后面就可以跟随任意的符合命名规范的函数名了

●参数必须至少有1个

●最后一个参数表示WebService的返回值,它必须是指针或者引用(因为只有这

样我们才能在函数内部修改这个值)

其他需要注意的地方:

你可以定义多个符合规则的接口文件,这样子会产生多个WebService服务。但是请不要将同一个WebService的接口在多个文件中定义,也不要为不同的WebService服务起相同的名字。

3.4写一个方便我们使用的批处理文件

soapcpp2.exe使用命令行参数的形式生成文件,为了方便我们可以“一键操作”,我们写一个批处理文件BuildSOAP.bat,内容如下:

@echo off

mkdir gSOAP

soapcpp2.exe -i -dgSOAP soapInterface.h

pause

其中,soapInterface.h就是我们刚刚定义好的WebService函数接口,如果存在多个函数接口,则可以写多行相似的命令

-dgSOAP则表示要将soapcpp2.exe生成的文件放到gSOAP目录下,这样方便我们将自己的代码与soapcpp2.exe生成的代码分离开(在目录前附加-d即表示输出目录,注意,-d与目录名之间没有空格)

加-i表示我们要生成C++类,方便我们使用这个服务。

然后我们就可以执行这个批处理文件了,执行完毕后,我们去gSOAP目录下,可以看到以下的生成文件:

相关文档
最新文档