linux基礎學習之 gSOAP 1

2021-07-11 06:22:57 字數 3899 閱讀 8051

wsdl2h

是wsdl/模式轉換器和資料繫結工具。

把乙個wsdl檔案生成乙個c++標頭檔案

wsdl2h file.wsdl

這個生成的標頭檔案是乙個web服務的規範,包含了引數型別和服務函式定義在乙個可以理解的格式在c++裡面。web服務操作表示為函式原型。生成的標頭檔案也包含各種注釋,有關web服務wsdl中定義的屬性。

生成乙個ansi c, wsdl2h –c file.wsdl

多個wsdl檔案可以一次生成幷包含在乙個檔案裡面

wsdl2h –o file.h file1.wsdl file2.wsdl….

你可以檢索wsdl檔案從乙個或多個uri

wsdl2h –o file.h

把xml模式轉換成c或者c++與xml繫結**

wsdl2h –o file.h file.xsd file2xsd…

soapcpp2

存根(stub)/骨架(skeleton)編譯器和**生成器。

用乙個生成的標頭檔案生成乙個高階的xml資料和c++繫結

soapcpp2 –i –limport file.h

wsdl2h工具可以將乙個或多個wsdl檔案轉換成c/c++檔案。同樣可以應用在沒有wsdl時將xml模式轉換成c/c++檔案實現xml資料和c/c++資料的繫結。

工具wsdl2h只生成乙個檔案,這個標頭檔案包含所有的資訊,從wsdl和xml模式檔案中獲得。

-a    為當地元素與匿名型別索引結構名稱

-b    雙向操作以服務單向響應訊息

-c    生成c源**

-d    使用dom來填充xs:any 和xsd:anytype的元素

-f     生成模式擴充套件扁平c++類層次結構

-g    生成全球頂級元素宣告

-h    列印出help資訊

-l path     使用path去為#import原始檔定位

-i     不使用import

-j     不生成soap_env__header 和 soap_env__detail定義

-k    不生成soap_env__header mustunderstand限定符

-l     包含license資訊在output裡面

-m   使用xsd.h模組匯入原始型別

-n name         使用名稱字首的服務,為每個繫結服務

-n name          使用的名稱作為基本空間字首名稱,而不是ns

-o file            輸出到檔案

-s     不生成stl**

-t file     使用型別對映檔案而不是預設的檔案typemap.dat

-u          unicode的xml名稱對映到utf8編碼的unicodec/c++識別符號

-u           不生成unions

-v           詳細輸出

-w          抑制警告

-x           不生成_xml any/anyattribute可擴充套件元素

對於wsdl2h工具typemap.dat檔案旨在通過自定義或優化型別繫結對映架構型別的c/c++型別。它包含自定義xml模式為c/c++的型別繫結和一些繫結為方便起見定義。

型別繫結可以提供xml模式型別繫結到c/c++型別為您的專案。型別繫結有四個部分:

prefix__type = declaration | use | ptr-use

『prefix__type』 是c/c++翻譯模式的型別,『declaration』 在標頭檔案裡面介紹c/c++型別,』use』選項是直接指定型別是如何使用的,』ptr-use』 指定如何使用型別為指標型別。

該soapcpp2

編譯器和**生成器從從命令列呼叫和可選的需要

標頭檔案作為引數,或者,當檔名是不存在的名稱,解析標準

輸入:

>soapcpp2 [aheaderfile.h]

其中,aheaderfile.h

是wsdl2h

產生或開發的

c/c++

標頭檔案中手動指定作為函式原型和

c/c++

資料型別的

soap/xml

服務操作中

為xml。

該soapcpp2

工具產生的

c/c++

原始檔。這些檔案被用來實現

soap/xml

客戶端和服務,並實現高階的

xml資料繫結邏輯轉換成

c/c++

資料轉換成

xml,反之亦然。

由soapcpp2生成的檔案有:

soapstub.h      從輸入的標頭檔案產生的修改和注釋的標頭檔案

soaph.h          主要的標頭檔案包含所有的客戶端和服務的**

soapc.cpp       對指定的資料結構序列化和反序列化

soapclient.cpp              遠端操作的客戶機存根例程

soapserver.cpp       服務框架的例程

soapclientlib.cpp   客戶端存根結合本地的靜態的(反)序列化

soapserverlib.cpp  服務框架結合本地靜態的(反)序列化

soapxyzproxy.h

soapxyzproxy.cpp

soapxyzobject.h

soapxyzservice.h

soapxyzservice.cpp

.xsd               乙個ns.xsd檔案與使用的每個命名空間字首ns的xml模式生成

通過在標頭檔案輸入到編譯器的資料結構

.wsdl              乙個ns.wsdl檔案與在標頭檔案中輸入使用的服務操作到編譯器的每個命名空間字首ns的wsdl描述生成

.xml               幾個soap / xml請求和響應的檔案被生成。這些示例訊息檔案是有效的前提是充足的架構命名空間指令新增到頭檔案或生成的.nsmap命名表中為

客戶/服務不用手改性

.nsmap           通過服務操作使用的每個命名空間字首納秒生成乙個檔案ns.nsmap

在輸入到編譯器標頭檔案

stdsoap2.h      stdsaop2.cpp執行時庫的標頭檔案

stdsoap2.c      執行c庫與xml解析器和執行時支援例程

stdsoap2.cpp 

-1           生成soap1.1繫結

-2           生成soap1.2繫結

-0           沒有soap繫結,使用rest

-c           只生成客戶端**

-s           只生成服務端**

-t           生成伺服器的自動測試的**

-ec         產生深層資料複製的額外程式

-ed         生成深資料刪除多餘的程式

-et         

-l           不生成soapclient.cpp/soapserverlib

-a           使用soapaction 和 ws-addressing 去呼叫伺服器端的操作

-a          使用soapaction去呼叫伺服器端的操作

-b          

-c           生成純c**

-d 通過《path》把源**儲存到指定目錄中

-e           生成soap rpc編碼樣式繫結

-f n       

-h           列印乙個簡要的只用資訊

-i使用for #import(用『:『分離或者在windows裡面用』;『分離)

-i            生成可鏈結模組(實驗)

-m-v           詳細輸出

gsoap基礎知識

gsoap是乙個開源的專案,用它可以方便的使用c c 地進行soap客戶端和伺服器端程式設計,而不必了解xml和soap協議的細節。這樣使用者就可以專注於自己的web service 客戶端或伺服器端的編寫,而不用糾纏與其它細節。我第一次接觸這些東西,我對soap的理解是這樣的 以http協議為基本...

gSOAP學習體會

include soaph.h 得到存根程式 include sendemailbinding.nsmap 得到命名空間對映表 include include include soapsendemailbindingproxy.h using namespace std int main int a...

Linux學習之網路基礎

一 ios osi七層協議介紹 二 網路基礎介紹 1 ip分為五大類,如上圖。在給某個網路分配乙個ip 外網ip 位址時,可以通過該位址進行網路連線。同樣若是這個ip屬於某個團體,如學校等。那麼可以通過該ip所在的類 所在網段 給學校的班級學生每個人的電腦分配乙個私有ip 私有ip號如上 此時所有的...