RTC 作为delphi 的最专业的web 应用服务器,如果客户端要使用JSON 的话,那么使用RTC 应该也是一种
非常好的选择。下面我们做一个使用RTC web 服务器返回数据库JSON 的例子。
建立一个新的程序窗体,放置如图的控件:
其中server 的属性为
注意,这一块先不要选多线程,因为在这个简单的例子里面暂时不涉及到数据库池,
后面我会做数据库池的例子。
RtcDataProvider1 的属性
然后设置好unidac 的数据库连接属性,我这里使用Firebird 作为数据库。
并设置事件以下代码:
procedure TForm2.Button1Click(Sender: TObject); begin server.Listen(); Button1.Caption:='已启动'; Button1.Enabled:=False; end;
procedure TForm2.RtcDataProvider1CheckRequest(Sender: TRtcConnection); begin with TRtcDataServer(Sender) do if UpperCase(Request.FileName)='/GETDATA' then Accept; end;
procedure TForm2.RtcDataProvider1DataReceived(Sender: TRtcConnection); var ds:Trtcdataset; r:Trtcvalue; ss:string; s:TRtcHugeString; begin with TRtcDataServer(Sender) do if Request.Complete then begin ds:=TRtcDataSet.Create; r:=Trtcvalue.Create; s:=TRtcHugeString.Create; try cx.SQL.Clear; cx.sql.Add('select * from bmb'); cx.Open; DelphiDataSetToRtc(cx,r.NewDataSet); r.to_JSON(s); ss:=s.Get; write(ss); cx.Close; finally ds.Free; r.Free; s.Free; end; end; end;
然后编译运行,注意要手工加入RtcDb 和rtcFastStrings 这两个单元引用。
现在我们在浏览器里面输入http://127.0.0.1/getdata
就会显示数据库输出的JSON 串
呵呵,可以发现rtc 的json 传里面已经把汉字直接转成unicode 码了。
现在,你可以在客户端任意解释所得到的数据了。