gSOAP是一個跨平台的實現SOAP通訊的開原始碼庫。這是我對這個開源項目到現在為止的不完全瞭解。所以能介紹的就是這些了,可能還存在錯誤。
因為和同事在弄一個項目,要在用戶端用C++和ASP.NET發布的WebService通訊。所以這幾天開始研究這個庫。昨天實現了其例子程式的幾個通訊,因為自己對ASP.NET也是一知半解,所以只能把和ASP.NET發布的WebService通訊留到今天。晚上回家小查了一下ASP.NET的簡單應用,雖然遇到一點問題,還是建立起了一個ASP.NET的伺服器。 沒有寫一行代碼,用了VS想到產生的程式碼,因為只是作為樣本,所以也沒打算去改代碼。
既然要實現ASP.NET WebService和gSOAP的通訊,ASP.NET構建的網站是必不可少的了。在ASP.NET方面我也是菜鳥,所以我使用的想到產生的程式碼。關於如何建立我想就不介紹了,如果也有人像我這麼菜的,請參考我的上一篇文章《訪問 IIS 中繼資料庫失敗問題以及第一次運行WebService》關於我遇到的一些問題。
建立好以後需要將網站發布出去。比如我們可以在http://localhost/SOAP/Service.asmx這個網址中查看該WebService。我們就可以在瀏覽器中輸入http://localhost/SOAP/Service.asmx?wsdl以擷取wsdl檔案。以wsdl為尾碼名儲存該wsdl檔案。
到gSOAP官網http://www.cs.fsu.edu/~engelen/soap.html中下載最新的gSOAP版本。可以在bin檔案夾中獲得wsdl2h.exe和soapcpp.exe兩個工具。
wsdl2h.exe是可以根據一個wsdl檔案產生一個.h檔案。假如我們儲存的哪個wsdl檔案名稱為:WebService.wsdl。那麼我們在命令列中輸入:wsdl2h.exe Service.wsdl。這樣就會產生相應的.h檔案。然後由soapcpp.exe根據這個.h檔案來產生相應的代碼檔案。soapcpp.exe -i WebService.h,就會產生相應的檔案,其中ServiceSoap.nsmap, SoapC.cpp, soapH.h, soapServiceSoapProxy.h, soapServiceSoapProxy.cpp, soapStub.h這些檔案是構建gSOAP用戶端所必須的,至於其他檔案用來做什麼,我現在也不知道,若有高手知道,望指點一二。除了這些檔案,我們還需要找到stdsoap2.h, stdsoap2.cpp兩個檔案。在所有的檔案都找到以後,我們需要吧這些檔案加到工程中去。
最後我們需要編寫用戶端程式,他的作用就是用來在伺服器端擷取"Hello word"字串,他的簡單代碼如下:
Code
#include "stdafx.h"
#include "soapServiceSoapProxy.h"
#include "ServiceSoap.nsmap"
const char server[] = "http://localhost/SOAP/Service.asmx";
int main(int argc, char **argv)
{
printf("Getting Hello World words!\n");
ServiceSoapProxy soapService;
soapService.soap_endpoint = server;
_ns1__HelloWorld input;
_ns1__HelloWorldResponse output;
soapService.HelloWorld(&input, &output);
printf("%s", output.HelloWorldResult->c_str());
return 0;
}
然後我們就運行代碼就會出現一下字元了: