gsoap_2.7.12.tar.gz。tar zxvf gsoap_2.7.12.tar.gz
cd gsoap_2.7.12
./configure --prefix=/usr/local/gSOAP
make && make install
/usr/local/gSOAP/bin/wsdl2h -c -o TestHeader.h \
https://192.168.0.151:8080/services/TestWS?wsdl
-c 產生 C 相容程式碼 (預設 C++)。-s 禁用 STL,需將 gsoap/import/stlvector.h 複製至 TestHeader.h 同目錄。/usr/local/gSOAP/bin/soapcpp2 -c -C TestHeader.h
-c:產生 C 程式碼-C:僅產生客戶端 (預設含伺服端)soapH.h, soapStub.h, TestHeaderHttpBinding.nsmap 等) 及 gSOAP 原始碼目錄。libgsoap.a (C) 或 libgsoap++.a (C++)。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。