unit DeCrmHeLinuxMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts, FMX.ExtCtrls, FMX.StdCtrls, FMX.Objects, FMX.Controls.Presentation, IdHTTP, IdSSLOpenSSL, IdIOHandler, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, FMX.Edit, System.ImageList, FMX.ImgList, System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent; type TDlgeCrmHeLinuxMain = class(TForm) imgMain: TImage; lbMode: TLabel; btnGetPolicy: TButton; mmPolicy: TMemo; edSvrAddr: TEdit; imgMainList: TImageList; NetHTTPClient: TNetHTTPClient; NetHTTPRequest: TNetHTTPRequest; tProc: TTimer; procedure btnGetPolicyClick(Sender: TObject); private { Private declarations } HTTP_: TIdHTTP; SSL_: TIdSSLIOHandlerSocketOpenSSL; function HttpPost(sDest, sRqType, sParam: String): String; public { Public declarations } Constructor Create(aOwner: TComponent); override; Destructor Destroy; override; end; var DlgeCrmHeLinuxMain: TDlgeCrmHeLinuxMain; implementation uses System.JSON, System.JSON.Readers, System.Net.Mime; {$R *.fmx} Constructor TDlgeCrmHeLinuxMain.Create(aOwner: TComponent); procedure InitHttp; begin SSL_ := TIdSSLIOHandlerSocketOpenSSL.Create(nil); SSL_.SSLOptions.Method := sslvSSLv23; SSL_.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1, sslvTLSv1]; HTTP_ := TIdHTTP.Create(nil); HTTP_.IOHandler := SSL_; with HTTP_ do begin Request.Clear; Request.UserAgent := 'Mozilla/5.0'; Request.ContentType := 'application/json; charset=utf-8'; //'application/xml'; Request.Accept := 'application/json; charset=utf-8'; Request.Charset := 'utf-8'; Request.Connection := 'Keep-Alive'; ConnectTimeout := 3000; ReadTimeout := 3000; end; NetHTTPClient.UserAgent := 'Mozilla/5.0'; NetHTTPClient.ContentType := 'application/json; charset=utf-8'; NetHTTPClient.Accept := 'application/json; charset=utf-8'; NetHTTPClient.AcceptCharSet := 'utf-8'; NetHTTPRequest.CustomHeaders['UserAgent'] := 'Mozilla/5.0'; NetHTTPRequest.CustomHeaders['ContentType'] := 'application/json; charset=utf-8'; NetHTTPRequest.CustomHeaders['Accept'] := 'application/json; charset=utf-8'; NetHTTPRequest.CustomHeaders['Charset'] := 'utf-8'; end; begin Inherited Create(aOwner); InitHttp; end; Destructor TDlgeCrmHeLinuxMain.Destroy; begin FreeAndNil(HTTP_); FreeAndNil(SSL_); Inherited; end; function TDlgeCrmHeLinuxMain.HttpPost(sDest, sRqType, sParam: String): String; var ss: TStringStream; begin Result := ''; try ss := TStringStream.Create(sParam, TEncoding.UTF8); try HTTP_.Request.CustomHeaders.Values['requestType'] := sRqType; Result := HTTP_.Post(sDest, ss); if (Result = '') and (HTTP_.ResponseCode = 200) then Result := 'true'; finally FreeAndNil(ss); end; except {$IFDEF TRACE1} on E: Exception do ETgException.TraceException(Self, E, Format('Fail .. HttpPost(), RqType=%s', [sRqType])); {$ENDIF} end; end; procedure GetRunningAplications(Applist: TStringlist); var fWorkSpace:NSWorkSpace; list:NSArray; i: Integer; lItem:NSDictionary; key,value: NSString; begin fWorkSpace := TNsWorkspace.Wrap(TNsWorkSpace.OCClass.sharedWorkspace); list := fWorkspace.launchedApplications; if (List <> nil) and (List.count > 0) then begin for i := 0 to list.count-1 do begin lItem := TNSDictionary.Wrap(List.objectAtIndex(i)); key := NSSTR(String(PAnsiChar(UTF8Encode('NSApplicationBundleIdentifier')))); // You can also use NSApplicationPath or NSApplicationName value := TNSString.Wrap(lItem.valueForKey(key)); Applist.Add(String(value.UTF8String)); end; end; end; procedure TDlgeCrmHeLinuxMain.btnGetPolicyClick(Sender: TObject); var sRes: String; O: TJSONObject; jr: TJsonReader; sr: TStringReader; SizeF: TSizeF; ss1, ss2: TStringStream; NetHearder: TNetHeaders; Res: IHTTPResponse; MD: TMultipartFormData; begin SizeF.cx := 570; SizeF.cy := 298; imgMain.Bitmap := imgMainList.Bitmap(SizeF, 1); O := TJSONObject.Create; O.AddPair('MODEL_ID', 'kjkim'); O.AddPair('mwAKey_IP', '192.168.14.71'); O.AddPair('mwAKey_MAC', '00155D903838'); O.AddPair('mwAKey_HOSTNAME', 'DESKTOP-GIUQ72N\kjkim'); O.AddPair('mwAKey_STATUS', 'Disconnected'); O.AddPair('mwAKey_COLLASTCONN', FormatDateTime('yyyy-mm-dd hh:nn:ss', Now)); O.AddPair('mwAKey_COLVERSION', '1.5.2.22'); O.AddPair('mwAKey_AGENTID', 'kjkim'); O.AddPair('mwAKey_EULACONFIRMED', 'disagree'); O.AddPair('mwAKey_LOCATION', 'KKU_TEST'); O.AddPair('mwAKey_PWDSET', 'true'); O.AddPair('mwAKey_SCRNLOCK', 'true'); O.AddPair('mwAKey_OSVER', '10'); O.AddPair('mwAKey_PATCHES', 'null'); O.AddPair('mwAKey_AVINFORM', 'AV'); O.AddPair('mwAKey_ASINFORM', 'AS'); O.AddPair('mwAKey_FIREWALLINFO', 'null'); O.AddPair('mwAKey_SOFTWAREINFO', 'null'); O.AddPair('mwAKey_ADDEULACONFIRM', 'false'); O.AddPair('mwAKey_OSSAFE', 'true'); O.AddPair('mwAKey_PATCHEXIST', 'true'); O.AddPair('mwAKey_AVSAFE', 'true'); O.AddPair('mwAKey_ASSAFE', 'true'); O.AddPair('mwAKey_FWSAFE', 'true'); O.AddPair('mwAKey_SAFEBLOCKSETTING', 'true'); O.AddPair('mwAKey_VPNINFO', 'kjkim'); O.AddPair('mwAKey_EMPNO', 'kjkim'); // ssl : https://192.168.14.133:8443/agentLogRequests.do // nomal : http://192.168.14.67:4445/agentLogRequest.do edSvrAddr.Text := Trim(edSvrAddr.Text); (* Result := ''; try ss := TStringStream.Create(sParam, TEncoding.UTF8); try HTTP_.Request.CustomHeaders.Values['requestType'] := sRqType; Result := HTTP_.Post(sDest, ss); if (Result = '') and (HTTP_.ResponseCode = 200) then Result := 'true'; finally FreeAndNil(ss); end; except {$IFDEF TRACE1} on E: Exception do ETgException.TraceException(Self, E, Format('Fail .. HttpPost(), RqType=%s', [sRqType])); {$ENDIF} end; Request.UserAgent := 'Mozilla/5.0'; Request.ContentType := 'application/json; charset=utf-8'; //'application/xml'; Request.Accept := 'application/json; charset=utf-8'; Request.Charset := 'utf-8'; *) NetHTTPRequest.CustomHeaders['requestType'] := '123120'; // NetHearder ss1 := TStringStream.Create(O.ToJSON, TEncoding.UTF8); ss1.Position := 0; ss2 := TStringStream.Create('', TEncoding.UTF8); Res := NetHTTPRequest.Post(edSvrAddr.Text, ss1, ss2); sRes := Res.ContentAsString(TEncoding.UTF8); if ss2.Size = 0 then exit; // sRes := HttpPost(edSvrAddr.Text, '123120', O.ToJSON); O.Free; try // O := TJSONObject.ParseJSONValue(sRes) as TJSONObject; O := TJSONObject.ParseJSONValue(ss2.DataString) as TJSONObject; except exit; end; mmPolicy.Text := O.Format(4); O.Free; end; end.