您的位置:首页 > 编程语言 > Delphi

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

2014-09-04 16:00 561 查看
在读本文章前请参考 前面的文章 介绍

之前的文章都是介绍如何 从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];
}


哎 看到博客的同学 有福气啊,这块 我搜索了无数的资料 才 搞出来 现在奉献给大家
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: