Delphi REST API Post Sample

2019-03-27 18:52发布

问题:

Can someone post a simple example of a JSON POST request to an API using Delphi 2005. I have found numerous examples using GET but the API provider does not allow requests via HTTP GET and does not support URL encoding parameters.

I am brand new to calling REST services (have used SOAP in the past) so please let me know if you require more information.

回答1:

You would just use Indy's TIdHTTP component and call the Post method. Pass the URL as the first argument and your JSON string as the second argument. Something like this:

procedure TForm1.Button1Click(Sender: TObject);

  var    jsonToSend:TStringList;
         http:TIDHttp;
  begin
  http := TIDHttp.Create(nil);
  http.HandleRedirects := true;
  http.ReadTimeout := 5000;
  jsonToSend:=TStringList.create;
  jsonToSend.Add('{ Your JSON-encoded request goes here }');
  Memo1.Lines.Text:=http.Post('http://your.restapi.url', jsonToSend);
  jsonToSend.Destroy;
  http.Destroy;
  end;
end.

I'm assuming you are already able to encode and decode the JSON and that you were just asking how to perform an HTTP post using Delphi.



回答2:

One option, using some part of our mORMot Open Source framework:

uses SynCrtSock, SynCommons;
var t: variant;
begin
  TDocVariant.New(t);
  t.name := 'john';
  t.year := 1982;
  TWinHTTP.Post('http://servername/resourcename',t,'Content-Type: application/json');
end;

Note that here you can construct your JSON content using a custom variant storage, which will be converted as JSON text when sent to the server.