wsdl是通過wsdl檔案作為不同應用的通訊介面,所以如何生成wsdl語言很重要,但是很多時候我們發現自己編寫的標頭檔案通過gsoap工具soapcpp2.exe從頭檔案中無法正常生成對應的wsdl語言,幾經尋找,終於發現:
通過對應標頭檔案.h生成客戶端或伺服器****的時候,對應的標頭檔案中的注釋描述資訊和對外介面都需要有規定的格式才能正確生成wsdl語言檔案。
1、如過頭檔案中匯出函式命名沒有字首,那麼能生成對應的客戶端或伺服器**相關**,但是無法為每乙個介面生成對應的請求和響應wsdl檔案,否則,必須新增ns__字首,注意是兩條下劃線才可以生成,且生成的schema對應的網域名稱為預設ns.xsd
標頭檔案:
#ifndef _c_web_client_inte***ce_
#define _c_web_client_inte***ce_
int ns__add( int num1, int num2, int* sum );
int ns__sub(int num1, int num2, int* sum);
int ns__mul(char *namelist, char **arealist);
#endif
生成命令:
soapcpp2 -c test.h -1
生成結果包含各個介面的請求和響應wsdl檔案,例如add方法的請求wsdl: ns.add.req.xml
<?xml version="1.0" encoding="utf-8"?>
ns="">
add>00
add方法的響應wsdl檔案:ns.add.res.xml
<?xml version="1.0" encoding="utf-8"?>
ns="">
addresponse>
02、加入帶注釋的wsdl配置專案
#ifndef _c_web_client_inte***ce_
#define _c_web_client_inte***ce_
// wsdl配置項
生成add方法的請求wsdl檔名:name_area.add.req.xml
<?xml version="1.0" encoding="utf-8"?>
urn:name_area">
">
add>00
生成add方法的響應wsdl檔名:name_area.add.res.xml
<?xml version="1.0" encoding="utf-8"?>
urn:name_area">
"">
0總結: 要想生成對應的wsdl檔案,介面命名必須以ns__字首打頭,其次要控制對應wsdl檔案檔名和編碼等配置,必須要有對應的注釋配置專案,soapcpp2工具會自動檢查對應配置生成對應的檔案;
gsoap工具生成標頭檔案和原始檔
在利用gsoap工具和onvif官方 上提供的wsdl生成框架的時候,有一些引數經常搞迷糊。在此詳細記錄。wsdl2h工具是用來將wsdl檔案生成標頭檔案的工具,使用範例 wsdl2h o 要生成的標頭檔案 wsdl檔名 常用引數解析 o 指定輸出的標頭檔案名字 n 命名空間的字首,預設是ns c ...
C 呼叫WSDL介面
public class webservice throw newexception sb.tostring 生成 例項,並呼叫方法 system.reflection.assembly assembly cr.compiledassembly type t assembly.gettype nam...
wsdl檔案生成cs檔案
今天遇見的問題 搞了好久,網上解決方案也不多,就把自己找到的留下來。有一點不明白的是,把wsdl位址給我,我直接新增引用就行了,幹嘛非要讓我用wsdl檔案去生成cs檔案。然後這樣生成的檔案裡面,還要刪除和修改的東西才正常執行。wsdl language c n testdemo out d minf...