分享

Datasnap 使用JSON 传递数据的简易方法

 npkaida 2015-10-01

在上一篇文章中,使用了 OleVariant;


本文将介绍使用JSON方式来传递。。。


经测试在 windows下、Android 下都没有问题。。苹果则未测试。。。


服务端:


  1. function TServerMethods1.CheckUsernameAndPassword3(U, P: string): TJSONObject;  
  2. var  
  3.   JO:TJSONObject;  
  4.   UserInfo :TLoginUserInfo;  
  5. begin  
  6.   UserInfo.LoginState := 255 ;   //Defautl: Unknown error  
  7.   UserInfo.IsSuperUser := false;  
  8.         UserInfo.UserCode := '';  
  9.         UserInfo.UserCode := '';  
  10.         UserInfo.UserName := '';  
  11.         UserInfo.Password := '';  
  12.         UserInfo.Deportment := '';  
  13.         UserInfo.MachineCode := '';  //设备编号  
  14.         UserInfo.AutoPromptMsg :='';  
  15.         UserInfo.UserClass :=0 ;  
  16.         UserInfo.ProductionWorkShop :='' ;  
  17.   with QRY  do begin  
  18.     Close;  
  19.     SQL.Text :=''; //略过  
  20.     Open;  
  21.     if not IsEmpty then begin  
  22.       if P <> FieldByName('MM').AsString  then begin  
  23.         UserInfo.LoginState :=1;  
  24.       end else  
  25.       if FieldByName('SFJY').AsBoolean then begin  
  26.         UserInfo.LoginState :=3;  
  27.       end else begin  
  28.         UserInfo.LoginState :=0;  
  29.         UserInfo.IsSuperUser := FieldByName('CJYH').AsBoolean;  
  30.         UserInfo.UserCode := U;  
  31.         UserInfo.UserCode := FieldByName('XH').AsString;  
  32.         UserInfo.UserName := FieldByName('MC').AsString;  
  33.         UserInfo.Password := FieldByName('MM').AsString;  
  34.         UserInfo.Deportment := FieldByName('BMBH').AsString;  
  35.         UserInfo.MachineCode := FieldByName('SBBH').AsString;  //设备编号  
  36.         UserInfo.AutoPromptMsg :='';  
  37.         UserInfo.UserClass :=FieldByName('jtsclx').AsInteger ;  
  38.         UserInfo.ProductionWorkShop :=FieldByName('SCCJ').AsString ;  
  39.       end;  
  40.     end else UserInfo.LoginState :=2;  
  41.     Close;  
  42.     //读是否是验厂  
  43.     SQL.Text :=<span style="font-family: Arial, Helvetica, sans-serif;">''; //略过</span>  
  44.     Open;  
  45.     UserInfo.FactoryEvaluation := FieldByName('FE').AsBoolean;  
  46.     Close;  
  47.   end;  
  48.   
  49.     JO:=TJSONObject.Create;  
  50.     JO.AddPair('LoginState',TJSONNumber.Create(UserInfo.LoginState));  
  51.     if UserInfo.IsSuperUser  then  
  52.       JO.AddPair('IsSuperUser',TJSONTrue.Create)  
  53.     else  
  54.       JO.AddPair('IsSuperUser',TJSONFalse.Create);  
  55.     JO.AddPair('UserCode',TJSONString.Create(UserInfo.UserCode));  
  56.     JO.AddPair('UserName',TJSONString.Create(UserInfo.UserName));  
  57.     JO.AddPair('Password',TJSONString.Create(UserInfo.Password));  
  58.     JO.AddPair('Deportment',TJSONString.Create(UserInfo.Deportment));  
  59.     JO.AddPair('MachineCode',TJSONString.Create(UserInfo.MachineCode));  
  60.     JO.AddPair('AutoPromptMsg',TJSONString.Create(UserInfo.AutoPromptMsg));  
  61.     JO.AddPair('ProductionWorkShop',TJSONString.Create(UserInfo.ProductionWorkShop) );  
  62.     JO.AddPair('UserClass',TJSONNumber.Create(UserInfo.UserClass));  
  63.     Result := JO;  



客户端:

  1. function Tdm.PubF_CheckLoginUsername3(U, P: string): TLoginUserInfo;  
  2. var  
  3.   JO:TJSONObject;  
  4. begin  
  5.   JO := dm.CheckUsernameAndPassword3(U,P);  
  6.   Result.LoginState         := StrToIntDef(JO.GetValue('LoginState').Value,255) ;  
  7.   Result.IsSuperUser        := JO.GetValue('IsSuperUser').Value='True' ;  
  8.   Result.UserCode           := JO.GetValue('UserCode').Value ;  
  9.   Result.UserName           := JO.GetValue('UserName').Value ;  
  10.   Result.Password           := JO.GetValue('Password').Value ;  
  11.   Result.Deportment         := JO.GetValue('Deportment').Value ;  
  12.   Result.MachineCode        := JO.GetValue('MachineCode').Value ;  
  13.   Result.AutoPromptMsg      := JO.GetValue('AutoPromptMsg').Value ;  
  14.   Result.ProductionWorkShop := JO.GetValue('ProductionWorkShop').Value ;  
  15.   Result.UserClass          := StrToIntDef(JO.GetValue('UserClass').Value,0);  
  16. end;  




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多