delphi2010\delphi XE7 開發及調試WebService 實例

使用delphi已經10多年了,一直搞桌面程序開發,對Webservice一直很陌生,近來因工做須要,學習delphi開發WebService,擔憂遺忘,做此筆記。 特別感謝 中塑在線技術總監 大犇 
(2017.5.24編輯,添加數據庫訪問示例XE7)
1、delphi開發WebService

一、打開delphi,選擇New--other--WebService,在右側選擇 SOAP Server Application,點擊OK
 
圖片 


二、上一步點擊OK後,會出現一個提示窗口,這裏選擇ISAPI 動態連接庫,點擊OK進入下一步

圖片 


三、此時會提示一個確認窗口,詢問是否爲SOAP模塊建立接口,這樣要選擇YES,delphi會爲您自動建立一個接口,不然本身動手寫會很麻煩

圖片 


四、點擊YES後,delphi會提示你輸入 接口服務名稱,這個名稱在後面就是接口名和實現此接口的類名,這裏咱們鍵入MyTest,其餘選項不要動,點擊 OK

圖片


五、點OK後,delphi會自動建立兩個單元,一個是MyTestIntf接口單元,一個是MyTestImpl接口實現單元

圖片


六、在MyTestIntf接口單元裏面,接口聲明後面寫入你的接口函數,這個函數就是後面給別人調用實現必定功能的函數。
注意:函數聲明後面必定要加上stdcall約束參數傳入方式,不然其餘語言可能沒法調用此接口函數

圖片


七、切換到MyTestImpl接口實現單元,發現delphi已經爲咱們建立好了接口實現類TMyTest,在類的聲明裏面寫上剛纔的接口函數。固然也能夠寫入其餘函數供你的接口函數內部調用,這裏我從新構造了類的Create函數及析構函數

圖片



八、保存項目,編譯生成DLL文件,此時delphi編寫WebService 就完成了,如此簡單 

圖片
九、2017年5月24日編輯,添加數據庫訪問功能示例(Delphi XE7下)
a、切換到webmodule單元,添加幾個控件用於訪問後臺數據庫。鏈接數據庫,將各個組建關聯起來,在query中添加sql代碼,查詢一些數據。
web

 

b、在類TWebModule1的public域添加一個方法GetXMLData,並實現該方法返回ClientDataset的XML數據(將query1查詢到的數據經過ClientDataset轉換爲XML)sql

 

 

c、在接口單元添加一個方法,和上面第6步操做同樣數據庫

 

 

d、在接口函數實現單元引用WebModuleUnit1單元,實現GetXMLData方法。在這裏將TWebModule1類實例化,調用其訪問數據庫的方法瀏覽器

 

 

e、新建一個VCL項目,添加一個按鈕和一個memo,在button click事件添加代碼,調用接口函數函數

 

 

f、運行效果學習

 

注:網站

特別說明,在這個例子中,我將數據訪問單元TWebModule類的GetXMLData方法和接口函數的GetXMLData方法弄重名了,這樣容易混淆。外部客戶端調用GetXMLData方法是接口的方法,不是後臺數據庫訪問單元TWebModule的GetXMLData方法,此方法由TEchoTest類的對象在後臺調用。spa

順序應該是這樣的:客戶端經過http地址獲取接口IEchoTest,後臺WebService實例化類TEchoTest,客戶端調用接口函數GetXMLData,此方法在TEchoTest類中被實現(TEchoTest類GetXMLData方法),在此方法中實例化TWebModule類,並調用其GetXMLData方法返回數據。
2、delphi調試WebService

 一、打開IIS,新建網站,至於如何創建網站就不說了,給網站起名,選擇物理路徑等,把剛纔編譯好的DLL文件放入網站的物理目錄裏面

圖片 

二、將新建的網站目錄瀏覽打開

圖片


三、在網站的功能選項頁,選擇可執行程序映射,選擇剛纔的DLL文件,並在請求限制裏面選擇[執行],這個DLL就是IIS要調用執行的DLL

圖片

圖片


四、選擇  應用程序池,把裏面的 32位兼容打開(我這個版本編譯出來的是32位的)和託管管道模式選擇爲  Classic

圖片


五、在瀏覽器中鍵入網址 http://127.0.0.1:你的網站端口,回車打開網站,此時瀏覽器會轉到你的網站物理目錄下,顯示出裏面的全部文件,其中有一個就是咱們須要的DLL

圖片


六、點擊那個DLL文件,會出現下面這個界面

圖片



七、點擊WSDL,會出現以下界面。這是一個XML文檔,描述WSDL的細節,瀏覽器地址欄中的地址是咱們須要的,複製下來

圖片
 

八、返回delphi,新建一個VCL項目。接着選擇New--other--WebService,選擇WSDL importer,點擊OK

圖片


九、出現一個提示窗口,鍵入第7步獲得的WSDL網址,若是WebService不在本機,注意IP地址要修改

圖片


十、點擊NEXT ---NEXT--OK,delphi會自動引入一個單元,這個單元就是WebService的接口單元,裏面會自動生成一個Get開頭方法,用來獲取接口。
在VCL單元引用這個單元,聲明一個變量,變量的類型就是接口名稱  3d

var  obj:IMyTest,調試

obj:= getXXXXX();

 obj.HelloWord('哈哈哈');至此delphi編寫WebService及調用結束。注:第7步獲得的WSDL地址很重要,若是點擊WSDL出現不了XML文檔,說明有問題,這個WSDL地址是不可用的,極可能的緣由是網站沒配置好。

相關文章
相關標籤/搜索