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

  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/hcu5555/p/2629655.html
Copyright © 2011-2022 走看看