C++语言实现的WebService开发库—gsoap应用实例

本文详细介绍了如何利用gSOAP库在C++中实现WebService应用,从编写xml schema和wsdl文件开始,逐步讲解如何生成代码、编译项目,以及服务器端和客户端的实现逻辑。此外,还探讨了gSOAP的内存管理和服务器端侦听的实现方法。
摘要由CSDN通过智能技术生成

(接上篇,本文给出gSOAP的实例,gSOAP的版本为2.8.8)

 

四、应用实例

上节介绍了gSOAP的应用有两种,大部分介绍gSOAP的文章,都以第一种为主,其实第二种应用包含了第一种,所以文本只介绍第二种应用。

本文的例子中,前提是通讯协议(格式)已定,webservice名已定,我们需要自己编写xml schema及wsdl文件。

1.xml schema

 这部分内容不属于本文范围,其实,对xml schema和wsdl编写,最好的办法就是找一个接近的例子,修改一下来满足我们的要求。

2.wsdl

 一个wsdl通常由如下部分组成:

<wsdl:definitions>
   <wsdl:types/>
   <wsdl:message/>
   <wsdl:portType/>
   <wsdl:binding/>
   <wsdl:service/>
</wsdl:definitions>
其中

  • types也就是通讯内容的格式(上面的xml schema),一般情况下,所有的类型最终被包含到一个复杂类型中,作为下面message中数据包引用的类型;
  • message定义了通讯的数据包(通讯一般是双向的,因此,一个调用过程有两个message定义,一般情况下用<methodname>in和<methodname>out分别表示进入和发出服务器的数据包),该数据包引用了上面types中的最终的复杂类型;
  • portType包含了若干operation(对应于代码实现中的method),定义了该operation进出的message;
  • binding是对上面operation的网络描述,也就是将operation与某一可以用soap形式进行网络访问的方式“绑定”在一起,binding指明了每个method的访问地址和方式。
  • service是对整个web服务的描述(访问地址等)。

 wsdl的定义是从小到大,一层一层的,从外部调用的角度来看,却是从大到小,由下往上理解:先有service,再有method(portType中的operation),然后有message,最后才有各种内容类型定义(schema),我们最终操作的起点与终点就是构造/解析这些类型。

3.生成.h

 由wsdl生成.h文件,使用的工具是wsdl2h,该工具的各种运行选项,见作者上篇文章。为使代码简洁,我们一般情况下需要采用如下的选项:

  • 允许stl类型(不加-s)
  • 产生typedef定义(加-y)<
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值