zoukankan      html  css  js  c++  java
  • linux环境下,利用gsoap生成webservice客户端进行应用程序开发的小结 (轉)

      关于gsoap和webservice的相关内容,百度百科解释的都挺详细了,链接gsoapwebservice

           半年前,需要在linux平台下用纯C开发webservice的应用,在这以前从未接触过webservice,一头雾水,不知道从何下手,在网上辗转求助,无意中发现gsoap这个编译工具,gsoap是一个开源项目,它可以方便的使用C调用webservice服务,开发者不需要去了解webservice的具体实现。

           实践是检验真理的唯一标准,下面来总结下如何在linux平台下进行开发。

           首先,准备gsoap软件,地址:http://gsoap2.sourceforge.net/,本人以前下载的是gsoap_2.7.15.tar.gz,并装到linux平台中,./configure(默认安装在/usr/local/share/gsoap目录下,也可以使用 ./configure –-prefix=/usr/local/gsoap指定安装路径)      默认安装的话,/usr/local/bin>目录下会有wsdl2h和 soapcpp2两个程序。wsdl2h:编译wsdl文件生成c/c++头文件。soapcpp2:gSOAP编译器,编译头文件生成服务器和客户端都需要的 c/c++文件。      

           然后建立项目的文件夹,例:mkdir phonelocal,上一步安装完成后,安装路径下会有stdsoap2.c,stdsoap2.h这两个文件,把这两个文件复制到新建的项目文件夹下,必不可少。至此,工具环境都算准备好了。

         

            接下来就是要进行开发了,

            首先,我们要得到wsdl文件(wsdl文件介绍),简单来说,他就是来描述webservice接口的。一般只要在webservice地址后加“?wsdl” 就行,例如,我们项目的webservice地址是:http://60.179.124.102/websp/Service.asmx ,它对应的wsdl文件就是:http://60.179.124.102/websp/Service.asmx?wsdl

            我们用wsdl2h工具通过以上wsdl文件来生成C/C++的头文件。 命令执行如下:    /usr/local/bin/wsdl2h -c -o phonelocal.h http://60.179.124.102/websp/Service.asmx?wsdl 。此处的头文件名可以根据自己要求随便取。

            wsdl2h常用选项:

                -o  文件名,指定输出头文件    

                -n   空间名前缀,代替默认ns 

                -c   产生纯C代码,否则是C++

                -s  不要使用stl代码

                -t    文件名,默认使用typemap.dat(下文会详细阐述)

                -e    禁止enum加上命名空间前缀

            然后用soapcpp2工具来生成存根文件,命令如下: soapcpp2 -c -C -x phonelocal.h

           soapcp2常用选项:

               -C  仅生成客户端代码

               -S  仅生成服务器端代码

               -L  不要产生soapClientLib.c和soapServerLib.c文件

               -c  产生纯C代码,否则是C++代码(与头文件有关)

               -x 不要产生XML示例文件

               -i   生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。

              这一步生成如下文件:

    • soapStub.h // soap的存根文件,定义了phonelocal.h里对应的远程调用模型
    • soapC.c soapH.h // soap的序列和反序列代码,它已经包含了soapStub.h,服务器端与客户端都要包含它
    • soapClient.c soapClientLib.c // 客户端代码,soapClientLib.c文件则只是简单地包含soapClient.c和soapC.c
    • ServiceSoap.nsmap ServiceSoap12.nsmap // 名空间定义,服务器端与客户端都要包含它

           因为这个项目只需要做客户端,所以在生成存根文件的时候用了-C,如果需要开发服务端的话,只要把这个去掉。本人暂时没尝试做过服务端,等下次有机会再试试。

    http://blog.csdn.net/zhubo0228/article/details/6707476

  • 相关阅读:
    无线路由器wds桥接技术+丢包率
    2016CCPC东北地区大学生程序设计竞赛1008/HDU 5929 模拟
    Codeforces Round #375 (Div. 2) A B C 水 模拟 贪心
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) A B C D 水 模拟 并查集 优先队列
    Codeforces Round #310 (Div. 2) A B C
    Codeforces Round #374 (Div. 2) A B C D 水 模拟 dp+dfs 优先队列
    Codeforces Round #313 (Div. 2) A B C 思路 枚举 数学
    Codeforces Round #373 (Div. 2) A B C 水 贪心 模拟(四舍五入进位)
    CentOS7 PostgreSQL 安装
    数据库事务的隔离级别
  • 原文地址:https://www.cnblogs.com/hcu5555/p/2629655.html
Copyright © 2011-2022 走看看