首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

gSOAP 實作標準 C/C++ 呼叫 Web Service 完整指南

     編輯:關於C++

環境建置 (Linux)

  1. 下載 gSOAP:官網,範例用 gsoap_2.7.12.tar.gz。
  2. 編譯安裝:
    tar zxvf gsoap_2.7.12.tar.gz
    cd gsoap_2.7.12
    ./configure --prefix=/usr/local/gSOAP
    make && make install
    

從 WSDL 生成程式碼

  1. 產生標頭檔:
    /usr/local/gSOAP/bin/wsdl2h -c -o TestHeader.h \
      https://192.168.0.151:8080/services/TestWS?wsdl
    
    -c 產生 C 相容程式碼 (預設 C++)。
  2. 複製 STL 支援檔:若未使用 -s 禁用 STL,需將 gsoap/import/stlvector.h 複製至 TestHeader.h 同目錄。
  3. 生成 Stub 程式碼:
    /usr/local/gSOAP/bin/soapcpp2 -c -C TestHeader.h
    
    • -c:產生 C 程式碼
    • -C:僅產生客戶端 (預設含伺服端)

專案整合與呼叫範例

  1. 建立 C 專案,包含生成的檔案 (soapH.h, soapStub.h, TestHeaderHttpBinding.nsmap 等) 及 gSOAP 原始碼目錄。
  2. 連結 libgsoap.a (C) 或 libgsoap++.a (C++)。
  3. 呼叫範例 (addUser):
    #include "soapH.h"
    #include "TestHeaderHttpBinding.nsmap"
    
    int main() {
        struct soap clientSOAP;
        struct _ns1__addUser addUserMsg;
        struct _ns1__addUserResponse addUserResponse;
    
        soap_init(&clientSOAP);
    
        addUserMsg.in0 = "test";
        addUserMsg.in1 = "test";
        addUserMsg.in2 = "test";
    
        if (soap_call___ns1__addUser(&clientSOAP, NULL, NULL,
                                     &addUserMsg, &addUserResponse) == SOAP_OK) {
            printf("%s\n", *addUserResponse.out);
        } else {
            printf("Error\n");
            soap_print_fault(&clientSOAP, stderr);
        }
    
        soap_destroy(&clientSOAP);
        soap_end(&clientSOAP);
        soap_done(&clientSOAP);
        return 0;
    }
    

關鍵說明

  • 所有資料結構 (_ns1__addUser 等) 與呼叫函式 (soap_call___ns1__addUser) 定義於 soapStub.h,依 WSDL 而異。
  • 錯誤處理可用 soap_print_fault 輸出詳細資訊。
  • 記憶體管理:soap_destroy 釋放 C++ 物件,soap_end 釋放暫存資料,soap_done 釋放 context。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved