采用gSOAP开发包开发 SOAPServer 和 SOAPClient 的简单示例

来源:互联网 发布:精硕科技 数据分析师 编辑:程序博客网 时间:2024/06/05 06:41


SOAP协议

 

1  SOAP协议简介

       SOAP协议又称为简单对象访问协议(Simple Object Access Protocol),是WebService的实现工具。

       关于SOAP协议的详细介绍请参见 http://www.cs.fsu.edu/~engelen/soap.html,此文档由gSOAP的作者编写。

2  SOAP协议实现

       SOAP协议的实现有两种方式,第一种是:采用微软提供的Soap Toolkit3.0开发包进行开发;第二种是:采用Robert van Engelen提供的gSOAP开发包,并且此开发包是开源的。下面就仅介绍第二种开发方式。

2.1 下载gSOAP开发包

       下载最新版的gSOAP开发包请到官网下载:http://www.cs.fsu.edu/~engelen/soap.html,点击即可下载,下载完之后解压即可。

2.2 开发SOAP简单示例

在开发SOAP简单示例之前,有必要简要介绍一些gSOAP中wsdl2h.exe和soapcpp2.exe两个工具,这两个工具在bin\win32目录下,如下图所示。


wsdl2h.exe:这个工具的作用就是根据.wsdl文件中描述的功能来生成.h文件中函数的定义。WSDL全称Web Service Description Language,WSDL采用XML编写,用来描述Web Service

soapcpp2.exe:这个工具的作用是根据.h文件中函数的定义来生成SOAP协议的实现。当然.h文件可以是通过wsdl2h.exe工具由.wsdl文件生成,也可以是自己编写。

下面以一个简单的示例来说明SOAP协议的实现,此示例的功能就是:客户端向服务端传递两个数值,服务端接收这两个数值,然后调用ns__add函数实现两个数的相加,并把结果发送给客户端。

2.2.1 服务端程序的开发

(1)在/bin/win32/目录下新建add.h文件,添加函数定义代码如下:

intns__add(double a, double b, double *result);

(2)打开cmd,切换到/bin/win32目录,输入如下命令:

如果成功的话,会在/bin/win32目录下生成如下一系列文件:


当然,我们也可以先编写add.wsdl文件,然后在命令行中输入如下命令:


生成add.h,接着就可以按照刚才的方式生成上述一系列的文件。

       (3)新建空工程SOAPServer,工程类型为Win32 Console,这里我选的开发环境为VS2003,然后添加头文件:stdsoap2.h、soapH.h、soapStub.h和源文件:stdsoap2.cpp、soapC.cpp、soapServer.cpp以及ns.nsmap,其中stdsoap2.h和stdsoap2.cpp这两个文件可以在gSoap开发包中的/gsoap-2.8/gsoap目录下可以找到。工程目录如下图所示。

到这里为止,几乎没有任何编码,下面开始进行main()函数的实现。

       (4)在工程SOAPServer中,新建源文件main.cpp,然后输入以下代码:


编译链接即可完成SOAP服务端程序的开发。

2.2.2 客户端程序的开发

(1)      利用2.2.1中的add.h文件来生成一系列文件,在命令行中输入如下命令:


这里与服务端程序不同之处是:把-S换成了-C。同样也会生成一系列文件如下:


(2)      新建空工程SOAPClient,仿照2.2.1中的(3),添加头文件:stdsoap2.h、soapH.h、soapStub.h和源文件:stdsoap2.cpp、soapC.cpp、soapClient.cpp以及ns.nsmap。工程目录如下图所示:


(3)      在SOAPClient工程中,新建源文件main.cpp,然后输入以下代码:


编译链接即可完成SOAP客户端程序的开发。

2.2.3 程序测试

首先运行SOAPServer.exe,然后运行SOAPClient.exe,然后输入127.0.0.1:123回车,然后输入1 2回车,结果为3。如果出现如下的运行结果,说明SOAP示例程序开发成功。


服务端程序运行结果


客户端程序运行结果

2.3 部署CGI程序

在2.2中的开发的SOAPServer.exe和SOAPClient.exe,似乎看起来与WebService没有任何关系,仅是实现了客户端与服务端程序之间的通讯,如果把SOAPServer.exe程序当成CGI程序部署到Web服务器下,就可以实现客户端程序(SOAPClient.exe)向Web服务器(Apache/IIS)发出请求,然后Web服务器把请求转发给CGI程序(SOAPServer.exe),CGI程序接收来自Web服务器的请求,经过处理把结果再发送给Web服务器,最后Web服务器把CGI处理的结果返回给客户端程序。这里的Web服务器充当一个媒介,客户端无需知道CGI程序的端口就可以访问,只需要输入CGI程序的网络路径即可。客户端程序、Web服务器、CGI程序之间的关系如下图所示。



       关于如何把SOAPServer.exe充当CGI程序部署到Web服务器上,有待于解决。


可以点击此链接打开附带的源码

0 0
原创粉丝点击