C++調用C#WebService


  最近有個工作任務,需要在C++環境下調用WebService。網上找了很多資料,遇到各種問題折騰了兩天,好在總算是搞定了。特此記錄一下過程。

  1:安裝gSOAP

  我是通過gSOAP的方式訪問的WebService。那么首先要下載gSOAP,下載地址:http://sourceforge.net/projects/gsoap2/。我下載的版本是2.8的,直接解壓在桌面上,路徑:C:\Users\xsooy-pc\Desktop\gsoap-2.8。

  2:生成WebService頭文件

  運行CMD,進入控制台管理器。進入gSOAP的win32目錄下:

  

  在這個路徑下建立一個字符轉換規則文件wsmap.dat,文件內容為xsd__string = | std::wstring | wchar_t*,那么SOAP/XML中的string將轉換成std::wstrin或wchar_t*,這樣能更好地支持中文。

  我的WebService地址是:http://t.os.gs.cn/api/cn_2017.asmx。

       生成頭文件: 

  

  -o 文件名,指定輸出頭文件 
  -n 名空間前綴 代替默認的ns 
  -c 產生純C代碼,否則是C++代碼 
  -s 不要使用STL代碼 
  -t 文件名,指定type map文件,默認為typemap.dat 
  -e 禁止為enum成員加上名空間前綴

   執行命令后,當前目錄下多了一個WebService.h的頭文件:

  

  3:根據WebService頭文件生成其他文件

  

  

  -C 僅生成客戶端代碼 
  -S 僅生成服務器端代碼 
  -L 不要產生soapClientLib.c和soapServerLib.c文件 
  -c 產生純C代碼,否則是C++代碼(與頭文件有關) 
  -I 指定import路徑(見上文) 
  -x 不要產生XML示例文件 
  -i 生成C++包裝,客戶端為xxxxProxy.h(.cpp),服務器端為xxxxService.h(.cpp)

  執行完之后,目錄下的文件結構如下:

  

  4:新建C++控制台程序,並添加引用文件

  

  把生成文件加到項目里面來,上級目錄中的這兩個文件也加進來:

  

 

  注意引用進來的cpp文件取消預編譯,否則會出錯。

  

  5:最后附上源代碼

  http://download.csdn.net/detail/springxie9851/9888626

 

 

  

 

 

 

 

 

 

  


免責聲明!

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



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