1. 程式人生 > >C++客戶端通過gSOAP呼叫WebService

C++客戶端通過gSOAP呼叫WebService

webService三要素:

SOAP(Simple Object Access Protocol)、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)。 SOAP用來描述傳遞資訊的格式, WSDL 用來描述如何訪問具體的介面, UDDI用來管理,分發,查詢webService 。SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文字傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支援從訊息系統到遠端過程呼叫(RPC)等大量的應用程式。SOAP使用基於XML的資料結構和超文字傳輸協議(HTTP)的組合定義了一個標準的方法來使用Internet上各種不同操作環境中的分散式物件。

gSOAP:
1. wsdl2h.exe:
We use the gSOAP ‘wsdl2h’ WSDL parser to obtain the gSOAP header file specification of a Web service from a WSDL document.
完成 wsdl檔案(.wsdl)到標頭檔案(.h)的轉換,即由寫好的wsdl格式的介面定義檔案轉換為C/C++格式的標頭檔案。
2. soapcpp2.exe:
根據介面標頭檔案生成應用程式客戶端和服務端的框架檔案(soapClient.cpp、soapServer.cpp等)。

計算器示例:
wsdl檔案URL地址:

http://www.cs.fsu.edu/~engelen/calc.wsdl
a) 程式->執行 輸入cmd 啟動命令列;
b) cd到wsdl2h.exe所在檔案路徑;
c) 輸入:wsdl2h.exe -o cal.h http://www.cs.fsu.edu/~engelen/calc.wsd
-c代表轉化成C程式碼。
-s代表不使用STL,取而代之需要在工程中包含stdsoap2.h和stdsoap2.cpp。
-o file代表指定輸出檔名稱。具體:wsdl2h.exe -h
d)soapcpp2.exe -i cal.h
-C代表生成客戶端程式碼。
-S代表生成服務端程式碼。
-L代表不生成soapClientLib/soapServerLib
-c代表僅生成c程式碼 -i代表使用Proxy
通常情況下使用命令soapcpp2 –S/-C –L -i xxx.h
生成如下檔案:
生成檔案

建立新控制檯應用程式:
新增到專案的檔案
calctest.cpp程式碼:

#include<iostream>
#include"soapcalcProxy.h"
#include"calc.nsmap"

using namespace std;

int main()
{
    calcProxy cal;
    double result = 0;
    if (SOAP_OK==cal.add(1, 2, result))
    {
        cout << result << endl;
    }
    system("pause");
    return 0;
}

各檔案簡介:
檔案簡介