@@ -328,16 +328,24 @@ procedure TMainForm.btnGetUserClick(Sender: TObject);
328328 lReq.Params.Add(edtUserName.Text);
329329 FExecutor.ExecuteRequestAsync(' /jsonrpc' , lReq,
330330 procedure(Resp: IJSONRPCResponse)
331- var
332- lJSON: TJsonObject;
333331 begin
334332 // Remember that TObject descendants (but TDataset, TJDOJSONObject and TJDOJSONArray)
335- // are serialized as JSON objects
336- lJSON := Resp.Result.AsObject as TJsonObject;
337- lbPerson.Items.Add(' First Name:' .PadRight(15 ) + lJSON.S[' firstname' ]);
338- lbPerson.Items.Add(' Last Name:' .PadRight(15 ) + lJSON.S[' lastname' ]);
339- lbPerson.Items.Add(' Married:' .PadRight(15 ) + lJSON.B[' married' ].ToString(TUseBoolStrs.True));
340- lbPerson.Items.Add(' DOB:' .PadRight(15 ) + DateToStr(lJSON.D[' dob' ]));
333+ // are serialized as JSON objects, so you can always read the JSON object
334+ // lJSON := Resp.Result.AsObject as TJsonObject;
335+ // lbPerson.Items.Add('First Name:'.PadRight(15) + lJSON.S['firstname']);
336+ // lbPerson.Items.Add('Last Name:'.PadRight(15) + lJSON.S['lastname']);
337+ // lbPerson.Items.Add('Married:'.PadRight(15) + lJSON.B['married'].ToString(TUseBoolStrs.True));
338+ // lbPerson.Items.Add('DOB:'.PadRight(15) + DateToStr(lJSON.D['dob']));
339+ var lPerson := TPerson.Create;
340+ try
341+ Resp.ResultAs(lPerson);
342+ lbPerson.Items.Add(' First Name:' .PadRight(15 ) + lPerson.FirstName);
343+ lbPerson.Items.Add(' Last Name:' .PadRight(15 ) + lPerson.LastName);
344+ lbPerson.Items.Add(' Married:' .PadRight(15 ) + lPerson.Married.ToString(TUseBoolStrs.True));
345+ lbPerson.Items.Add(' DOB:' .PadRight(15 ) + DateToStr(lPerson.DOB));
346+ finally
347+ lPerson.Free;
348+ end ;
341349 end );
342350end ;
343351
@@ -790,8 +798,7 @@ procedure TMainForm.edtGetCustomersClick(Sender: TObject);
790798 procedure(Resp: IJSONRPCResponse)
791799 begin
792800 FDMemTable1.Active := True;
793- FDMemTable1.LoadFromTValue(Resp.Result);
794- FDMemTable1.First;
801+ FDMemTable1.LoadFromJSONRPCResponse(Resp);
795802 end ,
796803 procedure(Exc: Exception)
797804 begin
@@ -814,32 +821,27 @@ procedure TMainForm.FormCreate(Sender: TObject);
814821 Sleep(1000 + Random(3000 ));
815822 end ;
816823 Log.Debug(' REQUEST : ' + JSONRPCObject.ToString(True), ' jsonrpc' );
817- end );
818-
819- FExecutor.SetOnReceiveResponseAsync(
824+ end )
825+ .SetOnReceiveResponseAsync(
820826 procedure(Req, Resp: IJSONRPCObject)
821827 begin
822828 Log.Debug(' >> OnReceiveResponse // start' , ' jsonrpc' );
823829 Log.Debug(' REQUEST : ' + Req.ToString(True), ' jsonrpc' );
824830 Log.Debug(' RESPONSE: ' + Resp.ToString(True), ' jsonrpc' );
825831 Log.Debug(' << OnReceiveResponse // end' , ' jsonrpc' );
826- end );
827-
828- FExecutor.SetOnReceiveHTTPResponseAsync(
832+ end )
833+ .SetOnReceiveHTTPResponseAsync(
829834 procedure(HTTPResp: IHTTPResponse)
830835 begin
831836 Log.Debug(' RESPONSE: ' + HTTPResp.ContentAsString(), ' jsonrpc' );
837+ end )
838+ .SetConfigureHTTPClientAsync(
839+ procedure (HTTPClient: THTTPClient)
840+ begin
841+ HTTPClient.ResponseTimeout := 20000 ;
842+ HTTPClient.CustomHeaders[' X-DMVCFRAMEWORK' ] := ' DMVCFRAMEWORK_VERSION ' + DMVCFRAMEWORK_VERSION;
832843 end );
833844
834-
835- FExecutor.SetConfigureHTTPClientAsync(
836- procedure (HTTPClient: THTTPClient)
837- begin
838- HTTPClient.ResponseTimeout := 20000 ;
839- HTTPClient.CustomHeaders[' X-DMVCFRAMEWORK' ] := ' DMVCFRAMEWORK_VERSION ' + DMVCFRAMEWORK_VERSION;
840- end );
841-
842-
843845 dtNextMonday.Date := Date;
844846 // these are the methods to handle http headers in JSONRPC
845847 // the following line and the check on the server is just for demo
0 commit comments