学习笔记:
正好这两天需要在linux客户端使用别人的web services,所以就找了两天的资料学习了下,下面记下以备后用。
通过搜索资料我发现了gsoap这个开源的软件开发工具包,听说是跨平台,封装的很好的,反正就是很牛x的。
既然要使用gsaop工具包肯定第一步是下载,安装。这步应该没什么问题,就是去官方网站下载对应系统的压缩包回来安装。
安装Ok后,我们到gsaop的bin目录找到对应系统的目录(如:linux386,macosx,win32..),然后进入看到有两个可执行文件:wsdl2h ,soapcpp2。
然后利用wsdl2h 生成对应的.h文件。
那如何生成呢?
首先需要web service的对应WSDL文件,此文件有三种方法获取,请看
得到wldl文件后使用如下语法:wsdl2h xxxx.wsdl生成.h文件,听说默认是生成c++语法格式的文件,我没用过。
我使用wsdl2h -c xxxx.wsdl生成c语法格式的头文件xxxx.h。
有了xxxx.h文件以后,我们就利用soapcpp2工具来生成其它的c/c++,.h文件。
生成文件如下:
soapClient.cpp:编译客户端的需要的存根例程。
soapC.cpp,soapH.h:用来序列化和反序列化c/c++不同数据类型。
soapServer.cpp: 编译服务器端的需要的存根例程。
xxxxsoap.nmap: 名称空间映射表
soapXXXProxy.h: 生成的代理类的头文件,使用代理类时需要此文件。
上面的几个文件,个人觉得关键要查看soapClient.cpp,因为你需要如何调用web services函数等等都在它里面。
在最后的编译阶段,还必须把gsoap目录下的stdsoap2.c与stdsoap2.h拷贝到编译的工作目录下。
编译如: gcc -o test test.c stdsoap2.c soapC.c soapclient.c
以上编译一个客户端。
还有一个你需要查看的文件就是用wsdl2h 生成的xxxx.h文件,它里面有你需要用到的结构定义。
当初我这个新手就是为这两个事情纠结了好几个小时,只要弄清楚了 你调用的接口函数定义,接口函数所需参数的定义后,你就不会有什么问题。
以上是个人见解,如有错误请指出,谢谢。