基于HTTP的DataSnap session管理
uses System.StrUtils, Datasnap.DSSession, SessionStoreObjectUI;
function TServerMethods1.EchoString(Value: string): string; begin Result := Value; end;
function TServerMethods1.ReverseString(Value: string): string; begin Result := System.StrUtils.ReverseString(Value); end;
//客户端调用http storeobject方法存储session key
function TServerMethods1.StoreObject(key, a, b, c: string): string; var Session: TDSSession; Inst: TMySessionClass; Dest: String; begin Session := TDSSessionManager.GetThreadSession; if Assigned(Session) then begin Inst := TMySessionClass.Create; Inst.a := a; Inst.b := b; Inst.c := c; Session.PutObject(key, Inst);
//return the URL wish Session ID in it for //testing getting the session data back Dest := 'http://localhost:8080/datasnap/rest/TServerMethods1/GetObject/' + key + '?sid=' + Session.SessionName;
Form3.SetThenText(Dest);
Exit(Dest); end;
Result := 'Failed to add the object to the session'; end;
//客户端调用http getobject获得session内容
procedure TServerMethods1.GetObject(key: string; out a, b, c: string); var Session: TDSSession; Inst: TMySessionClass; begin Session := TDSSessionManager.GetThreadSession; if Assigned(Session) then begin Inst := TMySessionClass(Session.GetObject(key)); if Assigned(Inst) then begin a := Inst.a; b := Inst.b; c := Inst.c; Exit; end; end; a := 'Failed to load data for key: ' + key; end;