I have server (WebBroker) and client (RestClient) applications. The server is executed on Windows, and one of its methods looks like this:
procedure TWM.KlijentiFirmeGet(Request: TWebRequest; Response: TWebResponse);var Sve : Boolean; FirmaID : String; firme : TFirme_Klijenti;begin try Sve := Request.QueryFields.Values['sve'].ToBoolean; except Sve := False; end; try FirmaID := Request.QueryFields.Values['firmaID']; except FirmaID := EmptyStr; end; firme := TFirme_Klijenti.Create; try Response.ContentType := 'application/json; charset=utf-8'; if Sve then Response.Content := Firme.PreuzmiSveFirme.ToJSON else Response.Content := Firme.PreuzmiFirmu(FirmaID).ToJSON; finally firme.Free; end; Response.StatusCode := 200;end;
Returning value of the Firme.PreuzmiSveFirme
method is in TJSONArray
format.
On the client side, calling the method looks like this:
function TConnection.IzvrsiAkciju(params: TJSONObject): TJSONValue; safecall;var ini : TIniFile; adresa : string; port : Integer; putanja: string; metod : Integer; //0 - get, 1 - POST, 2 - PUT, 3 - Delete header : TJSONArray; JV : TJSONValue; str : string; kljuc, vrednost : string;begin var RESTClient := TRESTClient.Create(nil); var RESTResponse := TRESTResponse.Create(nil); var RESTRequest := TRESTRequest.Create(nil); try RESTClient.ConnectTimeout := 300000; // TODO -cMM : Interface wizard: Implement interface method Result := TJSONObject.create; ini:=TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')); adresa := ini.ReadString('Server', 'adresa', 'http://192.168.0.33'); port:=ini.ReadInteger('Server', 'port', 211); RESTClient.BaseURL := Adresa +':'+ port.ToString; RESTRequest.Client := RESTClient; RESTRequest.Response := RESTResponse; RESTRequest.Resource :=params.GetValue<string>('putanja', ''); metod:=params.GetValue<Integer>('metod', 0); header:=params.GetValue<TJSONArray>('header', TJSONArray.Create); case metod of 0 : //Get begin str := ''; RESTRequest.Method := rmGET; for jv in header do begin kljuc := TJSONObject(JV).GetValue<string>('kljuc', ''); vrednost := TJSONObject(JV).GetValue<string>('vrednost', ''); RESTRequest.AddParameter(kljuc, Vrednost); end; RESTRequest.Execute; try str := Trim(RestResponse.Content); Result := TJSONObject.ParseJSONValue(RestResponse.Content) as TJSONArray; except Result := TJSONArray.Create; end; end; 1 : ; else ; end; finally end;end;
When I execute the client on Windows, RestResponse.Content
contains the whole JSONArray (converted to string). But, on MacOS, RestResponse.Content
contains only [{
letters.
What I am doing wrong?
Delphi version is 12.1.