有人可以发布一个简单的例子,使用Delphi 2005的API的JSON POST请求。我发现了很多使用GET的例子,但API提供程序不允许通过HTTP GET请求,并且不支持URL编码参数。德尔福REST API发布样本
我是调用REST服务的新品(以前使用过SOAP),所以如果您需要更多信息,请让我知道。
有人可以发布一个简单的例子,使用Delphi 2005的API的JSON POST请求。我发现了很多使用GET的例子,但API提供程序不允许通过HTTP GET请求,并且不支持URL编码参数。德尔福REST API发布样本
我是调用REST服务的新品(以前使用过SOAP),所以如果您需要更多信息,请让我知道。
您只需使用Indy的TIdHTTP
组件并调用Post
方法即可。将URL作为第一个参数并将JSON字符串作为第二个参数。事情是这样的:
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.
我假设你已经能够编码和解码JSON和你刚才问如何用Delphi执行一个HTTP POST。
一种选择,使用我们的mORMot开源框架的某些部分:
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;
请注意,这里的时候,发送到你可以构造使用custom variant
storage,这将被转换为JSON文本的JSON内容服务器。
此代码泄漏一个TStringList实例,每次调用 – mjn 2012-03-18 07:08:41
...如果在http.post()中引发异常,将泄漏内存(http + jsontosend实例)... – 2014-06-28 13:49:29