核心提示:咱們開發一個三層的android程序創建一個webservices stand-alone vcl application 做爲手機訪問的服務端一、new-other-webservices二、選擇s...mysql
咱們開發一個三層的android程序android
創建一個webservices stand-alone vcl application 做爲手機訪問的服務端web
一、new->other->webservicessql
二、選擇 stand-alone vcl application數據庫
三、這裏使用 默認端口8080瀏覽器
四、選擇建立接口服務器
五、給服務起個名字網絡
六、點ok後保存工程,保存爲目錄以下:oracle
七、至此爲止,什麼代碼都不寫,點擊運行,咱們看到app
八、啓動並點擊 open browser按鈕在瀏覽器裏看到
一個web服務就建立完成了。
接下來建立一個返回數據集的過程,用webservices發佈,供手機端調用。這裏我使用firedac
一、打開上一篇自動建立的WebModule
而後分別拖放如下數據鏈接控件
FDConnection1:firedac鏈接數據庫的
FDPhysMSSQLDriverLink1: 數據驅動 選的是sqlserver ,另外還有 db2 ,oracle,acess ,excel ,sqllite,mysql等
FDQuery1: 至關於adoquery
DataSetProvider1:delphi的provider
ClientDataSet1: delphi的我最喜歡的cds
二、數據庫的鏈接
首先用 FDConnection1 鏈接sqlserver服務器,在控件上郵件 設置一下信息
三、其餘數據控件鏈接
FDquery1已經自動連上了connection,咱們在sql裏寫如下語句
接下來 DataSetProvider1 連好fdquery1,clientdataset1的providername選擇 DataSetProvider1
四、在WebModule 中的public中實現如下代碼
function TAndroidWM.GetEmployee_Mi: widestring;
begin
with clientdataset1 do
begin
close;
open;
result:=xmldata;
close;
end;
end;
五、在AdroidServicesImpl.pas 引用WebModule 的接口實現的public單元實現如下代碼
function GetEmployee_mi:widestring;stdcall;
function TAdroidServices.GetEmployee_mi: string;
var
dm:TAndroidWM;
begin
dm:=TAndroidWM.Create(nil);
result:=dm.GetEmployee_Mi;
dm.Free;
end;
六、在 AdroidServicesIntf.pas 單元實現如下代碼
type
IAdroidServices = interface(IInvokable) ['{9B1596C5-AD43-4849-830E-0B82D8BAA043}']
function GetEmployee_mi:widestring;stdcall;
end;
六、運行server 查看webservice是否實現了GetEmployee_mi服務
服務端至此完成,實現了用clientdataset的xmldata返回數據集的過程,固然您能夠對返回的xml進行壓縮和解壓縮的操做,減少網絡傳輸壓力。
咱們把供手機端調用的web服務完成,接下來實現手機端調用webservices獲取數據
一、新建firemonkey mobile application
二、選擇blank application
三、這裏選擇分辨率,我用的手機是三星的p3100,沒別的優勢 就是大,7寸的屏,我女兒管這個叫平板手機 O(∩_∩)O~
四、界面佈局擺放以下:
五、綁定數據集
xe5中使用livebingding來綁定數據集,沒有datasource熟悉了,理論上全部的控件均可以綁定數據集。
先在clintdataset中添加字段
依次添加 code ,name ,py_code 三個字段,而後選中grid,點擊,而後將dataset拖拉到grid中:如圖
固然,您要選擇clientdataset1下的這個*號再拖拽,,這就完成了綁定。。。
而後調整列寬等選項。
界面就這樣吧,繼續。。。,先啓動我們上幾片文章創建的手機服務端
導入webservices單元,file->new->other->webservices->選擇 wsdlimporter
輸入wsdl地址 http://localhost:8080/wsdl/IAdroidServices
以後施展一路回車大法,只到生成一個單元文件保存並在手機窗體單元中引用。
在窗體上的按鈕的click事件中實現如下代碼:
procedure TForm1.button1Click(Sender: TObject);
var
ws:IAdroidServices;
s:string;
begin
ws:=GetIAdroidServices(true,'http://10.110.0.56:8080/soap/IAdroidServices',nil); //參數中可使用配置的url
s:=ws.GetEmployee_mi;
if length(s)<>0 then
clientdataset1.xmldata:=s;
end;
能夠在win32平臺上先測試一下,如圖:
win32平臺上沒問題 ok,接下來target選擇個人 大平板手機 O(∩_∩)O~ ,p3100
運行以下:
以上文章:xe5 android的服務端和手機客戶端的源代碼下載地址