C/C++利用gsoap庫調用WebService


C/C++調用WebService需要用到soap庫,一般使用的有gsoap和axis cpp兩種實現,這里使用gsoap來調用。gsoap可以在 linxu、windows、mac多種平台上使用。

gsoap的主頁地址是http://gsoap2.sourceforge.net/

新建一個WebService:

1 //寫一個簡單的方法
2 [WebMethod(Description="返回字符串")]
3 public string HelloWorld(string str)
4 {
5     return "The Value Is " + str;
6 }

gsoap使用步驟:

  1、解壓gsoap 在Windows下使用解壓下的\gsoap-2.8\gsoap\bin\win32下的wsdl2h.exe和soapcpp2.exe工具。

  2、用wsdl2h根據webservice生成.h文件,wsdl2h [opt] 頭文件名 WSDL文件名或URL

    wsdl2h常用選項:

    -o 文件名,指定輸出頭文件

    -n 名空間前綴 代替默認的ns

    -c 產生純C代碼,否則是C++代碼

    -s 不要使用STL代碼

    -t 文件名,指定type map文件,默認為typemap.dat

    -e 禁止為enum成員加上名空間前綴 type map文件用於指定

  3、利用wsdl2h.exe生成.h文件

  

    生成成功后會多出一個UserInfo.h文件

    

  4、利用soapcpp2.exe生成代理函數

  

    生成的前提:把gsoap\import目錄下的文件拷貝一份放在soapcpp2.exe的同一個目錄,否則生成不成功

    

  5、生成后會多出很多文件(純C代碼文件)

   

第三步,就是在vc中建個工程,設置如下:

   1、新建一個C++項目

  2、在gsoap目錄下拷貝stdsoap2.c、stdsoap2.h到新建的C++項目文件下,再把gsoap\bin\win32目錄生成好的soapC.c、soapClient.c、soapH.h、soapStub.h、targetver.h、UserInfoSoap.nsmap拷貝到新建的C++項目文件下

  3、新建好C++工程后,添加所有拷貝到新建的C++項目文件下的所有文件

  4、新建一個主入口的c文件,尅把自動生成的cpp main文件刪除,然后寫入代碼

 

 1 #include<stdio.h>
 2 #include"UserInfoSoap.nsmap"
 3 #include"soapStub.h"
 4 int main()
 5 {
 6     int iRet;
 7     struct soap userinfoSoap;
 8     struct _ns1__HelloWorld helloWorld;
 9     struct _ns1__HelloWorldResponse helloWorldResponse;
10     const char *pcAddr="http://localhost:31749/UserInfo.asmx?WSDL";
11     helloWorld.str= "LiGengMing";
12     soap_init(&userinfoSoap);
13     iRet=soap_call___ns1__HelloWorld(&userinfoSoap,pcAddr,NULL,&helloWorld,&helloWorldResponse);
14     if(iRet!=0)
15     {
16         printf("讀取數據失敗");
17     }
18     else
19     {
20         printf("讀取數據成功:%s",helloWorldResponse);
21     }
22     soap_destroy(&userinfoSoap);   
23     soap_end(&userinfoSoap);   
24     soap_done(&userinfoSoap);   
25     getchar();
26     return 0;
27 }

      5、注意點:helloWorld.str就是接口方法的傳入參數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM