-
2011-12-26
GSoap 使用心得
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://volvet.blogbus.com/logs/183329457.html
使用GSoap 来生成 基于 soap 的server 和 client 代码是个便捷的开发模式, 目前有wsdl 的标准来定义业务协议,wsdl的spec 参考【www.w3.org/TR/wsdl】
如果soap 服务有wsdl 描述的话, Gsoap可以直接生成 server 和 client 的框架, 开发者可以专注于业务逻辑的实现。 gsoap2.sourceforge.net
GSoap很强大, 但是使用的时候却经常容易出问题, 生成代码失败, 生成代码无法编译, 或者无法链接等等, 我使用GSoap的时候就遇到了这些问题, 网上虽有些教程, 但是却对这些实际问题避而不谈, 真有些怀疑作者是否真正尝试过GSoap.
下面列举一下 我碰到的问题,
1. wsdl2h 生成头文件失败
原因是wsdl文件中有包含一些网络链接, 需要检查网络连接是否正常。
2. soapcpp2 生成源代码无法编译
原因是wsdl2h 生成的时候 未用-t 制定 type map, 在GSoap 源代码包中有一个 typemap.dat (好像是这个名吧), 重新用wsdl2h 生成头文件后 再用soapcpp2 生成源代码就可以编译了。
还有一个无法编译的原因是 无论是server或者client, 都需要有soap engine 的支持, 从gsoap中把 soap engine 的code 加入工程 或者在已经安装有gsoap的系统中 用-l 链接gsoap 库即可。
3, 链接错误
原因是生成的代码 虽然可以编译, 但是链接的时候 有些函数没实现, 比如soap_putheader 这类函数, 不是那些业务逻辑的函数 (本来就需要用户实现) 但是编译的时候 会出现有些基本函数都找不到的情况, 对这个问题我困扰很久, 没有很好的办法解决, 后来是针对错误 直接修改生成的代码 终于成功搞定 soap service 程序, 但是总觉得没有找到真正解决方案, 如果有人知道方案, 还请告诉我。
reference:
gSOAP user guide.
收藏到:Del.icio.us







