Delphi REST API Post Sample

随声附和 提交于 2020-01-01 05:08:59

问题


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);
  try
    http.HandleRedirects := True;
    http.ReadTimeout := 5000;
    jsonToSend := TStringList.create;
    try
      jsonToSend.Add('{ Your JSON-encoded request goes here }');
      http.Post('http://your.restapi.url', jsonToSend);
    finally
      jsonToSend.Destroy;
    end;
  finally
    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.



来源:https://stackoverflow.com/questions/9743591/delphi-rest-api-post-sample

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!