gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP 数据结构 ,这样就使得用户必须改变程序结构来适应相关的类库。与之相反,gSOAP利用 编译器 技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。
简单来说, gSOAP 功能之一就是可以帮助我们使用C/C++调用web Service.
gSOAP的官方网站是:
http://www.cs.fsu.edu/~engelen/soap.html
http://sourceforge.net/projects/gsoap2/?source=typ_redirect 下载gSOAP
下载的是一个zip 包, 解压后路径如下:
gsoap/bin 目录下是针对不同的系统的开发工具。
1. 首先要有服务端的wsdl (如果已经有地址的话, 可以在浏览器中保存这个wsdl)
这里假设wsdl 的 文件名为 test.wsdl
2. 使用wsdl2h.exe,根据wsdl生成一个头文件(比如test.h),这是个临时文件,下一步骤执行完后自动删除即可!
绿色的部分适合 web service 相关的文件
XXXSoapBinding.nsmap:namespaces声明,需要包含在一个cpp文件里面,比如放在StdAfx.cpp里面,否则连接时报错:unresolved external symbol _namespaces
在实际调用的时候, 在调用的 .c 文件中
也可以打包成 libsoa.a 这样的静态链接库这样的文件来使用。
两条命令: cc -c libsoa.c soapC.c soapClient.c stdsoap2.c ar r libsoa.a libsoa.o soapC.o soapClient.o stdsoap2.o
stdsoap2.h,stdsoap2.c 在下载的gsoap 目录下
如果开发的web service 比较多的话, name space比较多, 有可能出现一些混乱。
这个时候可以指定固定的前缀
新建一个 typemap.dat 的文件
内容如下: