Wsdl使用



最近一段时间由于项目需求,需要进行WebServers开发,通过查找资料,选择了使用gSoap系统,节省了大量对协议的理解,初次使用,现在就使用gSoap的过程中出现的问题自己做个总结。

首先在网上下载最新版本的gSoap2.8.8

下载解压需要用到的文件 soapcpp2.exe,wsdl2h.exe

其中soapcpp2.exe用于将.h文件生成客户端/服务端的C文件或cpp文件;;wsdl2h.exe用于wsdl文件生成.h文件;关于指令的使用在cmd下输入soapcpp2.exe -h进行查看,可根据需要就行选择。

一.Wsdl使用

怎么wsdl文件生成.h文件?

CMD中输入:Wsdl2h.exe -s ApplicationQuery.wsdl

执行后生成:ApplicationQuery.h

命令中加入-s是不使用 "stlvector.h"

如果想自己指定命名空间可以使用下面命令:

wsdl2h -s -nQuery -NQueryServer ApplicationQuery.wsdl

 怎么将.h文件生成客户端与服务端程序?

客户端:Soapcpp2 -C -p AppQuery -iApplicationQuery.h

执行后出现以下文件:

接口相关信息在文件AppQueryAppQueryProxy.hAppQueryAppQueryProxy.cpp中。

服务端:

Soapcpp2-S -p AppQuery -i ApplicationQuery.h

接口相关信息在文件AppQueryAppQueryService.hAppQueryAppQueryService.cpp中。

服务端程序调用方式:

         

二.不用wsdl

有时我们不熟悉wsdl文件的格式,或者比较麻烦,我们可以自己写.h文件。

                                          

按照上面的格式完成后,可以直接用soapcpp2.exe生成相应的代码,与上面介绍的生成客户端与服务端类似。

 

三.整合多个wsdl

有时候接口(wsdl)比较多时,需要将它们整合到一起.

  1. 先将各wsdl文件生成.h,生成时需要重新命名空间(各命名空间最好不同);

    wsdl2h.exe -nQuery -NAppQuery ApplicationQuery.wsdl

  2. 在将各个wsdl文件生成的.h文件,拷贝到一个文件中。

  3. soaocpp2.exe生成相应代码即可。

  不过这样代码添加到项目的时候,会编译不过,比如生成服务端代码时,这就需要修改一下程序中的命名空间,把不相干的删除掉。

       

另外在#include***.nsmap”文件即可。

 

四.既是客户端又是服务端

如果模块既是客户端又是服务端,怎么办?我是这样的处理,按照上面介绍的先将服务端代码生成出来,然后生成客户端。由于在生成的代码中客户端与服务端有相同的代码部分

此时,我是采用的将它们合并到一起。为了合并最好把命名空间取值一样,即上面看到的AppQuery;

即:

    

感觉这种比较麻烦,应该有比较好的办法处理这种情况。后面再更新


©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值