linux環境下,利用gsoap生成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,如果需要開發服務端的話,只要把這個去掉。本人暫時沒嘗試做過服務端,等下次有機會再試試。

      

       接下來就開始要寫代碼了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章