Now everything is clear. Thank you
Peppe Il Mar 3 Gen 2023 22:59 Michael Van Canneyt via fpc-pascal < fpc-pascal@lists.freepascal.org> ha scritto: > > > On Tue, 3 Jan 2023, duilio foschi via fpc-pascal wrote: > > > I would like to write some code where a TFPHttpClient component sends > > a minimal json payload to a TFPHttpServer that (reads the payload). > > > > The working of the TFPHttpClient component is clear enough, while its > > counterpart TFPHttpServer proves rather obscure to me. > > > > TFPHttpClient > > =========== > > Page https://wiki.freepascal.org/fphttpclient > > contains complete and clear code: > > > > > > var > > Client: TFPHttpClient; > > Response: TStringStream; > > Params: string = '{"Name": "John", "Age": 32}'; > > begin > > Client := TFPHttpClient.Create(nil); > > Client.AddHeader('User-Agent', 'Mozilla/5.0 (compatible; fpweb)'); > > Client.AddHeader('Content-Type', 'application/json; charset=UTF-8'); > > Client.AddHeader('Accept', 'application/json'); > > Client.AllowRedirect := true; > > Client.UserName := USER_STRING; > > Client.Password := PASSW_STRING; > > Client.RequestBody := TRawByteStringStream.Create(Params); > > Response := TStringStream.Create(''); > > try > > try > > Client.Post(TheURL, Response); > > Writeln('Response Code: ' + > > IntToStr(Client.ResponseStatusCode)); // better be 200 > > except on E: Exception do > > Writeln('Something bad happened: ' + E.Message); > > end; > > finally > > Client.RequestBody.Free; > > Client.Free; > > Response.Free; > > end; > > > > I reckon I need to set - say- > > TheURL:='http://localhost:9200'; > > here > > > > > > TFPHTTPServer > > ============= > > > > say we use > > TTestHTTPServer=class(TFPHTTPServer); > > for our server, > > > > I understand that all action takes place inside procedure > > DataModuleRequest (so far so good): > > > > procedure TTestHTTPServer.DataModuleRequest(Sender: TObject; ARequest: > TRequest; > > AResponse: TResponse; var Handled: Boolean); > > begin > > // > > end; > > > > Q1: how can I create an object of type jsondata from ARequest? > > include fpjson and jsonparser units in your uses clause. Then do > > > JSON :=GetJSON(aRequest.Content); > > > > > > Q2: can I get a UTF8 string from ARequest? > > Yes, aRequest.Content is a string. > > > > > Q3: TFPHTTPServer has property Port. I reckon it will be set to 9200 > > here. Is it correct? > > Yes. > > > > > Q4: TFPHTTPServer has property Address. I reckon it will be set to > > 'localhost' here. Is it correct? > > It depends on what you want. Best is to leave it empty. > > > > > Q5: TFPHTTPServer has no property Username and Password. How do I > > check the values I set in the corresponding properties of > > TFPHTTPClient? > > aRequest.Authorization will be a string of the form > > Basic NNNNNNN > > Where NNNNN is a base64 encoded string with username:password in it. > So you must decode the string (see bas64 unit) and split the resulting > string in username and password. > > > > > Q6: what is the use of parameter Handled? > > If Handled is false, then an error will be sent to the client. > You should set Handled to true. > > Michael. > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal >
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal