• 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