c++Gsoap使用教程

一、下载最新gsoap包,下载完成解压就可以了。
二、把Wsdl2h.exe的目录设置成环境变量。
三、生成头文件
wsdl2h  -o xxx.h url(xxx.h为自己定义 的头文件名称,url为需要访问的webservice地址+?wsdl
注:执行此步骤时若输入url生成的头文件为空时,可以用webserver生成的.wsdl文件代替url。
四、将“\gsoap-x.x\gsoap\import”目录下的soap12.h、stl.h、stldeque.h、stllist.h、stlset.h、stlvector.h、复制到“gsoap-2.8\gsoap\bin\win32”中。 生成代码的时候要用到(若不在 gsoap-2.8\gsoap\bin\win32目录下生成则需要把这两个文件复制到当前目录下 ) 。x.x为版本号,根据自己的版本确定。
五、生成webService要调用的代码
-C 仅生成客户端代码  
-S 仅生成服务器端代码
-L 不要产生soapClientLib.c和soapServerLib.c文件  
-c 产生纯C代码,否则是C++代码(与头文件有关)  
-I  指定import路径(见上文)  · 
-x 不要产生XML示例文件
-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
根据自己的情况选择代码
例如:soapcpp2 -C -L -i -x xxx.h -I ../../import(xxx.h就是上边生成的 头文件)。
若提示“Critical error: #import: Cannot open File "stl.h" for reading”,吧stl.h文件复制过来就行。
六、在新工程中新建一个文件夹,将上一步生成的下列文件复制到新建的文件夹中。
1.soapC.cpp
2.soapH.h
3.xxxSoapProxy.h(此处的xxx为.wsdl文件的文件名)
4.xxxSoapProxy.cpp
5.soapStub.h
七、在“\gsoap-x.x\gsoap”目录下找到 stdsoap2.cpp 和stdsoap2.h 也复制到上一步的文件中去。
八、把xxx.nsmap(在第六步中生成的)中的文件添加到资源中。
九、在工程中开始调用。
1.构造webservice代理类。(xxxSoapProxy.h中定义的类)
2.定义发送请求的报文结构体。
3.给结构体赋值。
4.定义返回值得报文结构体。
5.使用代理类中webservice的方法。
6.取得返回结果。
 
 
 
 
备注:
1. .nsmap添加后 编译时会出现与其相关的错误如下图所示 添加WITH_NONAMESPACES 即可;
 
 2 .最好将webservice中的数组转换成宽字符不然汉子会乱码
转换方法是在当前目录创建typemap.dat文件并在文件中写入如下语句:
xsd__string = | std::wstring | wchar_t*
gsoap-2.8源码,基于服务器客户端的实例,带自动生成服务客户端代码的批处理程序,及如何使用。带自己学习参考的教程; 0.解压附件,soapInterface.bat所在路径不得含中文 空格 1.新建头文件 取soapInterface.bat文件的同名:soapInterface.h 文件内编写接口,具体说明看附件参考的教程 //gsoap ns service name: gservice //gsoap ns service style: rpc int ns__add(int num1, int num2, int* result ); int ns__sub(int num1, int num2, int* result ); int ns__mult( int num1, int num2, int *result); int ns__divid( int num1, int num2, int *result); 2.从附件内gsoap-2.8包中搜索复制stdsoap2.h,stdsoap2.cpp,soapcpp2.exe, 存放于soapInterface.bat同级目录 3.双击soapInterface.bat运行。生成gClientSoap,gServerSoap两个文件夹,分别复制到服务器工程与客户端工程中使用 4.gClientSoap,gServerSoap两个文件夹内用到的文件功能说明,更多参考附件教程 1)soapC.cpp , soapH.h//soap的序列和反序列代码,它已经包含了soapStub.h 2)soapServer.c ppsoapServerLib.cpp //服务器端代码(纯C代码是soapServer.c soapServerLib.c ),soapServerLib.cpp文件则只是简单地包含soapServer.cpp和soapC.cpp 3)soapClient.cpp soapClientLib.cpp//客户端代码(纯C代码是soapClient.csoapClientLib.c ),soapClientLib.cpp文件则只是简单地包含soapClient.cpp和soapC.cpp 4) soapStub.h // soap的存根文件,定义了我们编写的头文件里对应的远程调用模型 5) add.nsmap //XML服务命名空间 6)服务器端要载入的文件有:soapServer.cpp,soapC.cpp,stdsoap2.cpp; 要包含的文件有:gservice.nsmap,soapH.h; 客户端要输入的文件有: soapClient.cpp,soapC.cpp,stdsoap2.cpp; 要包含的文件有:gservice.nsmap,soapH.h
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxz520zmg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值