C 筆記之 Webservice呼叫 的那些事

2021-08-03 07:47:39 字數 1681 閱讀 1294

一、 前言

之前的文章中介紹了使用c++實現webservice的服務端和客戶端的通訊,這裡再介紹一下如何呼叫第三方的webservice服務。

二、 呼叫webservice

在寫客戶端的**之前,要利用wsdl2h.exe和soapcpp2.exe這

兩個工具和wsdl檔案生成一些必要的cpp和標頭檔案。

首先執行,cmd,然後開啟gsoap\bin\win32,執行wsdl2h.exe

用法:wsdl2h -o 頭檔名 wsdl檔名或url 例子:

wsdl2h -o test.h http://localhost:2488/service1.asmx?wsdl可以看到win32裡面多了乙個test.h檔案。

win32裡面多了乙個標頭檔案test.h之後,在命令列裡面執行soapcpp2.exe,

用法:soapcpp2.exe 頭檔名

soapcpp2常用選項

-c 僅生成客戶端**

-s 僅生成伺服器端**

-l 不要產生soapclientlib.c和soapserverlib.c檔案

-c 產生純c**,否則是c++**(與標頭檔案有關)

-i 指定import路徑(見上文)

-x 不要產生xml示例檔案

-i 生成c++包裝,客戶端為***xproxy.h(.cpp),伺服器端為***xservice.h(.cpp)。

例子:soapcpp2.exe -c test.h

如果報錯:critical error: #import: cannot open file "stlvector.h" for reading.

hint: use option -i(you can define multiple paths separated with ';')

則要要使用-i選項指定gsoap的 import檔案路徑,這個路徑是"$gsoap\gsoap\import":

soapcpp2.exe -c test.h -i d:\work\gsoap_2.7.13\gsoap-2.7\gsoap\import

這個時候win32目錄下會很多有檔案生成,如下圖:

將hellomz.nsmap,soapc.cpp,soapclient.cpp,soaph.h,soapstub.h,

以及gsoap工程根目錄下的stdsoap2.h,stdsoap2.cpp,總共七個檔案新增到客戶端project中,再新增**:

#include "hellomz.nsmap"

修改soapc.cpp,soapclient.cpp,stdsoap2.cpp的編譯條件為不需要預編譯標頭檔案,gsoap不需要mfc。

準備工作到現在就全部做好了。各位就按照自己的需要寫客戶端程式吧。

其實就是呼叫伺服器端的web method啦。

三、 結束

提供webservice的**:

實現webservice,也可以使用ms的

soaptoolkit

的庫呼叫

webservice。

另外,c++呼叫gsoap實現webservice通訊,如果出現中文亂碼怎麼辦,其他文章再做介紹。

WebService學習筆記之WSDL

應boss和tl的要求,學習restful webservice,從最基礎的wsdl等開始,暫時在w3school上學習,之後可能會參考的資料。wsdl 元素的核心。它描述乙個 web service 可被執行的操作,以及相關的訊息。相比於傳統程式語言中的乙個函式庫 或乙個模組 或乙個類 定義乙個操...

WebService學習筆記之SOAP

必須用 xml 來編碼 必須使用 soap envelope 命名空間 必須使用 soap encoding 命名空間 不能包含 dtd 引用 不能包含 xml 處理指令 soap 訊息的根元素,前4行應當始終是 xmlns soap soap encodingstyle 包含有關 soap 訊息的...

WebService 學習筆記

一 webservice 學習筆記 在眾多的互動式和分布式應用程式中,我們可能經常需要使用 webservice 在這裡我建立了自己的第乙個 webservice 程式。並且嘗試將我們的 service 服務發布到 iis,所用開發環境是 vs2005。1.首先我們先建立乙個 web服務專案,開啟 ...