WebService是一種可以跨語言和平臺的數據交互模式,使用非常廣泛,與JSon數據格式結合,更是當前非常流行的一種模式,本章針對DELPHI通過WebService進行數據的交互做一個相對簡單例子應用。
本文使用的DELPHI 版本為:DELPHI 11
閱讀目錄:
1.建立WebService服務端
2.建立WebService客戶端
【WebService服務端】
這一節的內容如下:
1.1 如何創建WebService服務端
1.2 創建一個客戶端獲取文本的調用接口
1.3 創建一個客戶端存儲數據的調用接口
其它說明:數據存儲我們采用JSon的方式進行交互
下面進入服務端創建的正題:
1.1 如何創建WebService服務端
首先我們打開DELPHI,然后新建一個WebService服務端工程
這里使用VCL或FMX都可以,我最近迷上了FMX,還是用FMX吧
端口可以自由設置,不過設置以后最好點一下測試,萬一端口沒打開呢,標準是8080,但我建議換一個
創建完成后,在彈出的對話框中選擇“YES”,然后輸入Service的名稱后點OK,軟件會自動創建單元文件
到當前為止,我們的服務端就創建好了,不過是個空的服務端,什么接口都沒有,但我們可以運行一下看看
在上面的界面中,點擊Star運行服務,然后我們可以點擊按鈕“Open Browser”,看看成功了沒?
結果:成功了,只是沒有被調用的接口,但服務已建立,下面開始創建接口函數
1.2 創建接口函數
在這里我決定創建兩個函數,一個輸出文本給客戶端調用,另一個接口用來給客戶端存儲數據,數據交互的方式為JSon
我們給第一個函數命名為:GetTestWord,用來給客戶端調用顯示文本。
我們給第二個函數命名為:SaveDataInf,用來給客戶端保存數據
下面先解決第一個函數
第一步:我們在MyServerIntf單元創建函數名稱,注意函數后面的stdcall不可缺少
第二步:在MyServerImpl單元中,實現函數的功能,這里注意聲明的地方,要放在Public里面
然后我們運行服務端,并Star,然后點擊 Open Browser,可以發現我們創建的函數已存在
好了,我們第一個函數創建完成,為了避免麻煩,我們把第二個函數也一起完成后,再來建立客戶端
我們轉到WebModuleUnit模塊,在這里放上連接數據庫的相關控件,大概如下:
至于數據庫如何連接,我這里不做說明,我相信這個大家基本都懂
因為要存儲數據,所以有些前提條件必須要做好說明
本案例一些相關的前提條件如下:
數據庫類型:MSSQL
數據表名稱:UserInf
數據表字段:UserN,PWD,GroupName,NickName四個字段
數據交互格式:JSon(內容也是按字段進行),這里有個非常重要的地方,JSon格式與內容必須服務端與客戶端要統一,否則就要出錯。
好了,前提條件說完了,我們先創建一個數據保存的內部函數先,此函數建立在WebModuleUnit單元中
注意,因為是使用JSon,所以我們要引用system.JSON單元,大體如下:
上面創建的函數只是內部函數,還不能被客戶端調用,所以我們接下來還要做兩個動作,這跟我們創建第一個函數的方法一樣
我們轉到MyserverIntf單元中,創建一個新的函數名稱,我們這里暫定為:SaveDataInf
接下來在MyServerImpl單元中,編寫此函數的對外功能,用來給客戶端調用保存數據
首先在此單元先引用WebModuleUnit單元
這一個動作為了使新手朋友們能看懂,我大概做個簡單說明:
1.此函數傳入的參數“str”主是客戶端調用時傳入的JSon文本
2.保存數據的功能因為在WebModuleUnit單元中已創建,所以這里引用就可以了
好了,到當前為止,我們服務端正式完成,F9運行并Star服務,不要關閉,我們開始設計客戶端
【WebService客戶端】
首先,我們新建一個工程,VCL或FMX都可以,看你喜歡,我是一如既往的FMX。
然后界面大概設計成下面圖片的樣子
接下來,導入WSDL
在這里輸入服務端調用的地址。
什么?不知道地址哪里可以找到?
答案:可以在服務端看到復制就可以了,點擊服務端的Open Browser,里面可以看到地址,如下圖
當然,如果您的服務端是放在遠程電腦上,那么Localhost就必須改成遠程電腦的IP或域名
我們接著操作下一步,下面基本不需要操作什么,一路下一步完成即可
保存單元后,我們就可以在客戶端操作了
首先,我們嘗試調用服務端建立的第一個函數:GetTestWord
我們把這個函數的調用功能給下面圖片的按鈕,并且代碼如下:
我們來測試一下,看看是否成功
OK,第一個函數調用成功
接著我們調用第二個函數來保存數據
我們建立了四個Edit來分別輸入數據表四個字段的內容,但我們在保存前,需要將四個字段內容轉換成JSon文本并輸入到Memo中,具體操作如下:
procedure TForm2.Button2Click(Sender: TObject);
varMyJson:TJSONObject;MyResult:Boolean;
begintryMyJson:=TJSONObject.Create;MyJson.AddPair('UserN',Edit1.Text);MyJson.AddPair('PWD',Edit2.Text);MyJson.AddPair('GroupName',Edit3.Text);MyJson.AddPair('NickName',Edit4.Text);Memo1.Text:=MyJson.ToString;finallyMyJson.Free;end;
end;
按上面的代碼,我們將四個EDIT內容轉換成了JSon文本,然后我們就可以把JSon文本通過WebService傳遞給服務端進行數據保存
procedure TForm2.Button4Click(Sender: TObject);
varStr:string;
beginstr:=MyWeb.SaveDataInf(Memo1.Text);ShowMessage(Str);
end;
然后我們看看數據保存成功了沒有?
數據保存成功,這里顯示兩條,是因為我點了兩次保存
好了,WebService的數據交互基本就實現的差不多了,接下來還有最最重要的一個環節
【標準得瑟環節】
本文介紹的夠不夠詳細,如果對您有用,請叫我雷鋒。
還是那句經典名言:能給新人看懂的教程才是好教程
得瑟結束,文章內容結束,但分享遠沒有結束。