使用gsoap實現多用戶端,單服務端webservice

來源:互聯網
上載者:User

標籤:webservice

本工程代碼使用情境:2個webservice client ,1個webservice(本來有2個webservice,但富盛的不由我們管理開發)。
FS(富盛) webservice client, ZS(卓視) webservice client.  ZS(卓視) webservice.
本WebServiceClient 工程將FS(富盛) webservice client, ZS(卓視) webservice client合并到一個dll中。ZS(卓視) webservice為一個獨立進程。

現為webservice添加 ResetQueryRecordPerEncoderId 介面。以下是添加新介面過程:
webservice 端:
1.手動編寫pminfo.h,ns__ResetQueryRecordCounterPerEncoderId為新添加,標頭檔全內容如下:
(注意標頭檔裡“//”不是注釋,是gsoap指令,不可缺少)
//gsoap ns service name:    PMInfo
//gsoap ns service protocol:    SOAP
//gsoap ns service style:    rpc
//gsoap ns service encoding:    encoded

//gsoap ns schema namespace:    urn:PMInfo

int ns__ResetQueryRecordCounterPerEncoderId(int encoder_id,int *result);
int ns__getFSwebserviceUrl(std::string *result);
int ns__getPM2_5(int encoder_id,int *result);
int ns__getPM10(int encoder_id,int *result);
int ns__getWindSpeed(int encoder_id,int *result);
int ns__getNoiseVal(int encoder_id,int *result);

2.在命令列中輸入以下命令,斷行符號,則會產生服務端所需檔案,最主要的是產生了 PMInfo.wsdl 檔案。以檔案可以反過來用wsdl2h.exe來產生標準的 gsoap標頭檔PMInfo.h(此檔案可另外命名)

soapcpp2.exe -S -x -i -L PMInfo.h -I./import/

3.執行 wsdl2h.exe -o PMInfo.h  PMInfo.wsdl 產生 自動版 PMInfo.h 這裡面會將原來手動添加介面的指標類型轉換為參考型別。* =》 &
4.再執行 soapcpp2.exe -S -x -i -L PMInfo.h -I./import/ 產生自動版的參考型別gsoap相關檔案。
5.編譯WebServiceSvr 服務端工程,會產生WebServiceSvr.exe.此時服務端修改完成.

Client 端:
用戶端DLL因為糅合了兩個webservice client,故相對單一client 要複雜一些。主要是命名空間的命名和區分,其實就是為了讓兩套client 互相不干擾。因為原本soapH.h soapStub.h soapC.cpp 這些檔案如果在兩個client下會相互覆蓋,只有一個生效,故需用命名空間分開。
1.首先將剛產生的PMInfo.wsdl拷貝到 WebServiceClient 目錄 下,同時確保富盛的wsdl檔案(“FSWebService.wsdl”)也在此目錄下:
2.wsdl2h.exe -o FS.h -qFS FSWebService.wsdl 產生FS.h作為gsoap檔案(工程中不必包含).
3. wsdl2h.exe -o ZS.h -qZS PMInfo.wsdl 產生ZS.h
4. soapcpp2.exe -C -L -i -x -qZS ZS.h -I./import/ 產生卓視用戶端相關檔案  注意:-x 不產生xml檔案,這些檔案對編碼沒用,一大堆,顯得雜亂。-qZS 使用ZS命名空間
5. soapcpp2.exe -C -L -i -x -qFS FS.h -I./import/ 產生富盛用戶端相關檔案
6. soapcpp2.exe -C -penv env.h   產生環境標頭檔。(單用戶端 時沒有此檔案)
7. 編譯用戶端工程。結束。


Demo:
編譯testClientDLL進行測試。

本文出自 “軟體技術” 部落格,請務必保留此出處http://danielllf.blog.51cto.com/2442311/1856673

使用gsoap實現多用戶端,單服務端webservice

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.