Delphi Xe DataSnap Rest + Flex 开发 基本探索5(Rest 服务参数传递)

来源:互联网 发布:编程达人 编辑:程序博客网 时间:2024/05/17 09:02

在读本文章前请参考 前面的文章 介绍

之前的文章都是介绍如何 从datasnap rest服务器读取数据,下面的文章将介绍前台如何传递参数到datasnap服务器,并介绍 rest服务模式参数的传递问题

1.delphi datasnap写的rest服务 基本都是以方法或函数的形式,既然是函数 那就能接受前台传递的参数,通过参数返回需要的值

2.rest 模式的普通参数传递 只需要在 地址后面 /参数1/参数2 等方式加参数

read.Load('datasnap/rest/TSMTest/ReverseString/'+edtPstr.text+'/123');

如图

后台代码如下

  

function TSMTest.ReverseString(Value: string;id:integer): string;begin  Result := inttostr(id)+ StrUtils.ReverseString(Value);end;

前台代码

protected function btnPstr_clickHandler(event:MouseEvent):void{var read :ReadDataFromServer = new ReadDataFromServer();read.onLoadComplete = onStrParam;read.Load('datasnap/rest/TSMTest/ReverseString/'+edtPstr.text+'/123');}public function onStrParam(e:Event):void{edtPstrRe.text = JSON.decode(e.target.data).result[0];}

这是最简单的传递 字符串,向int  等都可以这样传递

2.传递 数组 参数 到后台 效果如上图

后台代码

function TSMTest.SetArr(JsonStr:string): string;var  i:integer;  jsonObj:TjsonObject;  jsonArr:TJSONArray;begin  FrmMain.Memo1.Lines.Add('jsonValue:'+JsonStr); //FrmMain.Memo1.Lines.Add('jsonArrstr:'+JsonObj.ToString);  jsonObj  := TJSONObject.ParseJSONValue(jsonStr) as TJSONObject;  jsonArr  := jsonObj.Get(0).JsonValue as TJSONArray;  jsonArr  := jsonArr.Get(0) as TJSONArray;  FrmMain.Memo1.Lines.Add('jsonArrsize:'+inttostr(jsonArr.Size));  for I := 0 to jsonArr.Size-1 do  begin    FrmMain.Memo1.Lines.Add(inttostr(i)+':'+jsonArr.Get(i).Value);    result := result+jsonArr.Get(i).Value+',';  end;end;

前台代码

   

protected function btnPArr_clickHandler(event:MouseEvent):void{var read :ReadDataFromServer = new ReadDataFromServer();read.onLoadComplete = onArrParam;var arr:Array=['abc','efd',123];var str :String ='{"Array":['+ JSON.encode(arr)+"]}";read.Load('datasnap/rest/TSMTest/SetArr/'+str);}public function onArrParam(e:Event):void{edtPArr.text = JSON.decode(e.target.data).result[0];}

哎 看到博客的同学 有福气啊,这块 我搜索了无数的资料 才 搞出来 现在奉献给大家大哭           


0 0