C++與Web接口對接

(1)wsdl.xml : 是一門基於 XML 的語言,用於描述 Web Services 以及如何對它們進行訪問。他將Web服務描述定義爲一組服務訪問點,客戶端能夠經過這些服務訪問點對包含面向文檔信息或面向過程調用的服務進行訪問(相似遠程過程調用)。WSDL首先對訪問的操做和訪問時使用的請求/響應消息進行抽象描述,而後將其綁定到具體的傳輸協議和消息格式上以最終定義具體部署的服務訪問點。相關的具體部署的服務訪問點經過組合就成爲抽象的Web服務。web

 一個WSDL文檔一般包含7個重要的元素,即types( WebService用到的全部數據類型 )、importmessage( 指明一個操做所用到的數據類型。 )、portType WebService 全部提供的接口)、operation 服務中所支持的操做的抽象描述 )、binding 每一個端口定義消息格式和協議細節 )、service( 服務的訪問路徑)元素。這些元素嵌套在definitions元素中,definitions是WSDL文檔的根元素。網絡

這是我收縮多餘節點以後的wsdl.xml,大概能夠看到除import以外的元素,operation存在於portType和binding的內部子節點。架構

生成一個wsdl.xml,請參考http://blog.csdn.net/juxtapose/article/details/1779849app

關於wsdl.xml的瞭解不作過多介紹,若是要興趣能夠看http://blog.csdn.net/xiaobai20131118/article/details/34184773這篇博客函數

(2)gsoap-2.8:gSOAP編譯工具提供了一個SOAP/XML 關於C/C++ 語言的實現,從而讓C/C++語言開發web服務或客戶端程序的工做變得輕鬆了不少。 gSOAP是一種跨平臺的C和 C++軟件開發工具包。生成C/C++的RPC代碼(RPC:遠程過程調用,它是一種經過網絡從遠程計算機程序上請求服務),XML數據綁定,對SOAP Web服務和其餘應用造成高效的具體架構解析器,它們都受益於一個XML接口。 這個工具包提供了一個全面和透明的XML數據綁定解決方案,Autocoding節省大量開發時間來執行SOAP/XML Web服務中的C/C++。在網上能夠下載到這個庫,建議下載gsoap-2.8。工具

(3)addStdafx.vbs: 基於Visual Basic的腳本語言 .開發工具

Dim fso
Set fso = CreateObject("scripting.filesystemobject")
Set fdr=fso.GetFolder(".\")
Set subfdr=fdr.Files
For Each CppFile In subfdr
	If Right(CppFile.Name, 4) = ".cpp" Then
		Set batfile=fso.OpenTextFile(CppFile.Name)
		If not batfile.AtEndOfStream then
			txt=batfile.ReadAll
			txt="#include ""stdafx.h"""+ chr(10)+ txt
			Set batfile=fso.OpenTextFile(CppFile.Name,2)
			batfile.Write txt
			batfile.Close
		end if
	end if
next

(4)要使用wsdl.xml文檔還須要一個CreateSoap.bat, bat文件是dos下的批處理文件。批處理文件是無格式的文本文件,它包含一條或多條命令。在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統就會調用cmd.exe按照該文件中各個命令出現的順序來逐個運行它們。spa

@echo off

@rem ---------------------------------設置--------------------------------------
@rem 1.gSoap路徑
set hhsoappath=E:\libs\gsoap-2.8\

@rem 2.WSDLL服務地址 多個地址或本地wsdl格式xml文件時用空格分開
set hhsoapwsdllpath=E:\WebServiceDlls\aaa\wsdl.xml

@rem 3.目標路徑(將生成後的文件拷貝到此路徑)
set hhdestpath=E:\test

@rem 4.生成的頭文件名,通常不用改
set hhcreath=gsoap-http.h

@rem ---------------------------------設置--------------------------------------

@rem 拷文件
copy %hhsoappath%\gsoap\stdsoap2.h   stdsoap2.h
copy %hhsoappath%\gsoap\stdsoap2.cpp stdsoap2.cpp
copy %hhsoappath%\gsoap\bin\win32\soapcpp2.exe soapcpp2.exe
copy %hhsoappath%\gsoap\bin\win32\wsdl2h.exe wsdl2h.exe

@rem 調用wsdl2h程序
call wsdl2h.exe -I "%hhsoappath%gsoap\WS" -o %hhcreath% %hhsoapwsdllpath%

@rem 調用soapcpp2程序
call soapcpp2.exe -I "%hhsoappath%gsoap\import" %hhcreath%

call addStdafx.vbs

@rem 拷貝生成的文件
copy callUpload.h %hhdestpath%
copy soapH.h %hhdestpath%
copy soapStub.h %hhdestpath%
copy stdsoap2.h %hhdestpath%
copy soapC.cpp %hhdestpath%
copy soapClient.cpp %hhdestpath%
copy soapClientLib.cpp %hhdestpath%
copy soapServer.cpp %hhdestpath%
copy soapServerLib.cpp %hhdestpath%
copy stdsoap2.cpp %hhdestpath%
copy wsdl2h.exe %hhdestpath%
copy soapcpp2.exe %hhdestpath%
@rem nsmap文件名稱不是固定的,須要生成後手動複製
copy IPmsWebServiceSoapBinding.nsmap %hhdestpath%
@echo off
set hhsoappath
set hhsoapwsdllpath
set hhcreath

@pause

使用時根據實際狀況,修改1,2,3的路徑。.net

(5)首先新建一個項目,而後雙擊CreateSoap.bat文件,把自動生成的.h,cpp,nsmap文件所有拷貝到新建的項目下就可使用了,soapStub.h裏能夠看到能夠調用的全部函數。code

相關文章
相關標籤/搜索