采用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服务器上,有待于解决。
可以点击此链接打开附带的源码
- 采用gSOAP开发包开发 SOAPServer 和 SOAPClient 的简单示例
- gSoap 服务器和客户端的开发
- gSoap 服务器和客户端的开发
- Spring框架开发包和IOC示例
- php中soap使用,SoapServer服务端编写,SoapClient客户端编写
- 利用VC和gSOAP工具开发WebServer
- gSOAP C++移植和开发总结
- gSOAP C++移植和开发总结
- OpenLayers开发:简单示例
- Kafka 开发简单示例
- 使用Eclipse开发WebService的简单示例
- 【FreeMarker】【程序开发】一个简单的示例
- 最简单的jquery插件开发示例
- gsoap服务端的开发及注意事项
- Flex 开发gSOAP的客服端
- gsoap用于web service的开发
- gsoap高性能服务器的开发
- gsoap调用C#开发的WebService
- Altium 设置 PCB Snap Component
- 产品岗位细分的一些思考
- 阿里_一道备受关注的前端开发笔试题
- Ubuntu U盘启动制作
- C++编程 - 回字有四样写法,你知道么?
- 采用gSOAP开发包开发 SOAPServer 和 SOAPClient 的简单示例
- Lucas定理相关证明
- 《Metaphor Interpretation and Context-based Affect Detection》读书笔记
- leetcode做题思路(一)
- 联合国安理会法院命令日本停止捕杀鲸鱼
- Hadoop自定义排序和自定义数据类型使用(setSortComparatorClass和setGroupingComparatorClass)
- dbus 信号和方法测试
- Java性能优化系列之二--程序优化
- 前端工程师招聘的十道题,求大神解答!