Google,baidu,等等...不鳥(niǎo)他們?。。? 我要用自己開(kāi)發(fā)的分布式文件系統(tǒng)、分布式調(diào)度系統(tǒng)、分布式檢索系統(tǒng),做自己的搜索引擎!??!大魚(yú)有大志?。。? ---楊書(shū)童
type map文件用于指定SOAP/XML中的類型與C/C++之間的轉(zhuǎn)換規(guī)則,比如在wsmap.dat里寫(xiě)
那么SOAP/XML中的string將轉(zhuǎn)換成std::wstring或wchar_t*,這樣能更好地支持中文。
例:
從http://www.ayandy.com/Service.asmx?WSDL 生成ayandy.h文件,名空間為ay,使用wsmap.dat指定的轉(zhuǎn)換規(guī)則。
wsdl2h生成的頭文件里的變量、類型等名稱的前面都會(huì)加上名空間前綴,以兩個(gè)下劃線分隔。如上面的命令生成的頭文件,有這樣的定義:
前面的ayandy1__的是名空間前綴,用以防止名稱沖突。 wsdl2h的-n選項(xiàng)可以改變這個(gè)名空間前綴(默認(rèn)為ns)。對(duì)于枚舉ay1__theDayFlagEnum內(nèi) 的成員,如果嫌它太長(zhǎng)的話,可以用-e命令選項(xiàng)禁止加入名空間前綴。
編寫(xiě)SOAP程序除了頭文件是不夠的,還要有連接、通信、XML解析、序列/反序列化等工作。gSOAP提供的socapcpp2.exe就 是用于從頭文件中生成這些代碼的,我們只要關(guān)心真正的業(yè)務(wù)邏輯就行了。
編寫(xiě)SOAP客戶端下面將演示使用gSOAP到網(wǎng)上取得天氣預(yù)報(bào),互聯(lián)網(wǎng)上有不少網(wǎng)站提供SOAP服務(wù),比如Google提供的搜索API(現(xiàn)在已不再提 供新的License Key了),不少博客提供的API等。這里介紹一個(gè)提供天氣預(yù)報(bào)服務(wù)的SOAP服務(wù),地址是http://www.ayandy.com它提供了三個(gè)函數(shù):getSupportCity 查詢本天氣WebService支持的城市信息。 getSupportProvince 查詢本天氣 WebService支持的省份信息。 getWeatherbyCityName 根據(jù)城市名稱獲得天 氣情況。 它的WSDL地址是http://www.ayandy.com/Service.asmx?WSDL現(xiàn)在,我們編寫(xiě)一個(gè)客戶端去調(diào)用getWeatherbyCityName來(lái) 取得天氣情況1. 從WSDL得到頭文件
Copyright Copyright 楊書(shū)童