gSoap的使用

10 篇文章 0 订阅
7 篇文章 0 订阅

gSoap是一个工具集,便得用C/C++语言能非常非常容易的来开发基于SOAP协议的webservices和客户端程序。

这几天需要在我的嵌入式板子上用soap连接服务器,研究了一下gSoap,在此记录一下过程和心得吧。

 

1.编译

      编译PC本地库比较容易,直接configure就行了。

      交叉编译: 在configure时指定 --host为对就的平台就行了,  我的x86的cpu配置为:

          configure --host=i386-linux

      交叉编译应该是不能完整通过的,只要能正确编译出libgsoap.a 这个库就行了。

     
      他的两个工具 wsdl2h,soapcpp2 就使用本地编译的,但要和交叉编译的是同一个版本。

      使用交叉编译的库在连接时可能会出现找不到rpc_malloc的情况。只需要修改交叉编译的config.h中的

  •            将#define malloc rpl_malloc  注掉;                                                                                                         
  •           将#define HAVE_MALLOC 0    改为:#define HAVE_MALLOC 1

          可能还需要连接到libm.a 这个库.

 

 2.转换wsdl

      wsdl2h -c  webservice.wsdl

      soapcpp2 -c -C webservice.h

      执行以上两条命令后就会生成一堆c的文件,把这些文件连同交叉编译的库 和自己的程序一起编译连接就行

      了,具体的怎么调用接口在这我就不说了。

 

3.类型转换

      每种语言的数据类型定义是不一样的,如我的服务器用的是PHP它生成的wsdl中的整型为integer ,但在c中没

     有integer ,只有int , long long 这样的类型,gsoap提供了一个类型映射文件,在文件中可以指定本地类型与

     wsdl中的类型的映射关系,如,在当前目录创造一个typemap.dat 的文件,增加一行:

               xsd__integer = | long long

           这样就行wsdl中的integer 类型映射为本地c的long long , gSoap现在不支持将xsd__integer映射为int 类型。

 

4.使用自定义类型(类,结构 )

        在PHP中创建一个自定义类并加上对应的注释。如:

              class  result{

                  /*@var integer code

                   */

                   public  code;

                  /*@var string code

                   */

                   publid  msg;

             }

         在接口函数中就能直接返回这个类的对象.

       生成wsdl,在经gsoap转换后就行得到以c的struct 对应的ns1__result :

           struct ns1__result{

                 LONG64  code;

                 char *msg;

           };

       在PHP中返回一个类对象后,在c中就会得到一个struct ns1__result的实例指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值