基于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;

posted @ 2014-09-05 15:50  LAOS  阅读(787)  评论(0编辑  收藏  举报