利用gsoap很容易的产生出服务端与客户端的代码,下面详细描述将服务端的代码集成到apache的步骤。
本文采用的工具是vs2012,示例代码来源于:gsoap-2.8\gsoap\samples\calc
$ soapcpp2 -c calc.h
通过上面的命令就能产生客户端与服务端的代码(用不到*.xml文件可以删掉,如下图所示)。
说明:
1.gsoap的标准函数stdsoap2.h和stdsoap2.c需要额外从gsoap的根目录下拷贝;
2.soapClientLib.c和soapserverLib.c虽然用不到,建议保留着。
1、用vs2012导入gsoap-2.8\gsoap\mod_gsoap\mod_gsoap-0.6\apache_20\mod_gsoap工程,编译出mod_gsoap.so模块。
如下图所示:
2、在mod_gsoap模块所需的配置文件(本文是mod_gsoap.conf)末尾添加如下设置
LoadModule gsoap_module modules/mod_gsoap.so
<IfModule mod_gsoap.c>
<Location /soap>
SetHandler gsoap_handler
SOAPLibrary D://Apache24//Win32_Debug//ex_modules//gsoapDLL.so
Order allow,deny
Allow from all
</Location>
</IfModule>
3、在上面的第二步中,配置参数SOAPLibrary 用到了gsoapDLL.so,这一步的目的就是编译该动态库。
这一步中务必保证apache_init_soap_interface为导出函数,只有这样在mod_gsoap.so模块中才能调用。其他的五个用户自定义函数(ns__add、ns__sub、ns__mul、ns__div、ns__pow)无需为导出函数。
4、建立客户端工程发送请求
说明:
1.将calc.wsdl文件放到gsoapDLL.so所在目录下,并将其改名为gsoapDLL.wsdl。这样通过浏览器访问http://localhost/soap?wsdl时就能返回到浏览器上。
2.本文的word文档详见:http://download.csdn.net/detail/sszgg2006/8899077
本方案主要参考gsoap官网自带的Demo,位于gsoap-2.8\gsoap\mod_gsoap\mod_gsoap-0.6\apache_20\README.txt.