delphimvcframework/samples/jsonwebtoken/vclclient/MainClientFormU.pas

179 lines
4.0 KiB
ObjectPascal
Raw Normal View History

2016-05-23 17:26:00 +02:00
unit MainClientFormU;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
MVCFramework.Middleware.JWT,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.ExtCtrls;
2016-05-23 17:26:00 +02:00
type
TForm5 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Panel1: TPanel;
2016-05-23 17:26:00 +02:00
btnGet: TButton;
btnLOGIN: TButton;
Splitter1: TSplitter;
Memo3: TMemo;
Splitter2: TSplitter;
btnLoginWithException: TButton;
btnLoginJsonObject: TButton;
2016-05-23 17:26:00 +02:00
procedure btnGetClick(Sender: TObject);
procedure btnLOGINClick(Sender: TObject);
procedure btnLoginWithExceptionClick(Sender: TObject);
procedure btnLoginJsonObjectClick(Sender: TObject);
2016-05-23 17:26:00 +02:00
private
FJWT: string;
procedure SetJWT(const Value: string);
property JWT: string read FJWT write SetJWT;
2016-05-23 17:26:00 +02:00
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
uses
2020-09-24 21:30:45 +02:00
MVCFramework.RESTClient.Intf,
MVCFramework.RESTClient,
MVCFramework.SystemJSONUtils,
System.JSON;
2016-05-23 17:26:00 +02:00
procedure TForm5.btnGetClick(Sender: TObject);
var
2020-09-24 21:30:45 +02:00
lClient: IMVCRESTClient;
lResp: IMVCRESTResponse;
2016-05-23 17:26:00 +02:00
begin
{ Getting JSON response }
2020-09-24 21:30:45 +02:00
lClient := TMVCRESTClient.New.BaseURL('localhost', 8080);
lClient.ReadTimeOut(0);
if not FJWT.IsEmpty then
begin
lClient.SetBearerAuthorization(FJWT);
2016-05-23 17:26:00 +02:00
end;
2020-09-24 21:30:45 +02:00
lClient
.AddQueryStringParam('firstname', 'Daniele')
.AddQueryStringParam('lastname', 'Teti');
lResp := lClient.Get('/admin/role1');
if not lResp.Success then
ShowMessage(lResp.Content);
Memo2.Lines.Text := lResp.Content;
2020-09-03 19:57:00 +02:00
2020-09-24 21:30:45 +02:00
{ Getting HTML response }
lClient
.AddQueryStringParam('firstname', 'Daniele')
.AddQueryStringParam('lastname', 'Teti');
lResp := lClient.Accept('text/html').Get('/admin/role1');
if not lResp.Success then
ShowMessage(lResp.Content);
Memo3.Lines.Text := lResp.Content;
2016-05-23 17:26:00 +02:00
end;
procedure TForm5.btnLOGINClick(Sender: TObject);
var
2020-09-24 21:30:45 +02:00
lClient: IMVCRESTClient;
lRest: IMVCRESTResponse;
lJSON: TJSONObject;
2016-05-23 17:26:00 +02:00
begin
2020-09-24 21:30:45 +02:00
lClient := TMVCRESTClient.New.BaseURL('localhost', 8080);
lClient.ReadTimeOut(0);
lClient.SetBasicAuthorization('user1', 'user1');
lRest := lClient.Post('/login');
if not lRest.Success then
begin
ShowMessage(
'HTTP ERROR: ' + lRest.StatusCode.ToString + sLineBreak +
'HTTP ERROR MESSAGE: ' + lRest.StatusText + sLineBreak +
'ERROR MESSAGE: ' + lRest.Content);
Exit;
end;
lJSON := TSystemJSON.StringAsJSONObject(lRest.Content);
2016-05-23 17:26:00 +02:00
try
2020-09-24 21:30:45 +02:00
JWT := lJSON.GetValue('token').Value;
finally
2020-09-24 21:30:45 +02:00
lJSON.Free;
end;
end;
procedure TForm5.btnLoginJsonObjectClick(Sender: TObject);
var
2020-09-24 21:30:45 +02:00
lClient: IMVCRESTClient;
lRest: IMVCRESTResponse;
lJSON: TJSONObject;
begin
2020-09-24 21:30:45 +02:00
lClient := TMVCRESTClient.New.BaseURL('localhost', 8080);
lClient.ReadTimeOut(0);
lRest := lClient.Post('/login', '{"jwtusername":"user1","jwtpassword":"user1"}');
if not lRest.Success then
begin
ShowMessage(
'HTTP ERROR: ' + lRest.StatusCode.ToString + sLineBreak +
'HTTP ERROR MESSAGE: ' + lRest.StatusText + sLineBreak +
'ERROR MESSAGE: ' + lRest.Content);
Exit;
end;
lJSON := TSystemJSON.StringAsJSONObject(lRest.Content);
try
2020-09-24 21:30:45 +02:00
JWT := lJSON.GetValue('token').Value;
finally
2020-09-24 21:30:45 +02:00
lJSON.Free;
end;
end;
procedure TForm5.btnLoginWithExceptionClick(Sender: TObject);
var
2020-09-24 21:30:45 +02:00
lClient: IMVCRESTClient;
lRest: IMVCRESTResponse;
lJSON: TJSONObject;
begin
2020-09-24 21:30:45 +02:00
lClient := TMVCRESTClient.New.BaseURL('localhost', 8080);
lClient.ReadTimeOut(0);
lClient.SetBasicAuthorization('user_raise_exception', 'user_raise_exception');
lRest := lClient.Post('/login');
if not lRest.Success then
begin
ShowMessage(
'HTTP ERROR: ' + lRest.StatusCode.ToString + sLineBreak +
'HTTP ERROR MESSAGE: ' + lRest.StatusText + sLineBreak +
'ERROR MESSAGE: ' + lRest.Content);
Exit;
end;
lJSON := TSystemJSON.StringAsJSONObject(lRest.Content);
try
2020-09-24 21:30:45 +02:00
JWT := lJSON.GetValue('token').Value;
2016-05-23 17:26:00 +02:00
finally
2020-09-24 21:30:45 +02:00
lJSON.Free;
2016-05-23 17:26:00 +02:00
end;
end;
procedure TForm5.SetJWT(const Value: string);
begin
FJWT := Value;
Memo1.Lines.Text := Value;
end;
2016-05-23 17:26:00 +02:00
end.