【问题标题】:Delphi REST API Post SampleDelphi REST API 发布示例
【发布时间】:2012-03-16 19:47:17
【问题描述】:

有人可以使用 Delphi 2005 向 API 发布 JSON POST 请求的简单示例吗?我发现了许多使用 GET 的示例,但 API 提供程序不允许通过 HTTP GET 请求并且不支持 URL 编码参数。

我是调用 REST 服务的新手(过去曾使用过 SOAP),所以如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: delphi api rest post


    【解决方案1】:

    您只需使用 Indy 的 TIdHTTP 组件并调用 Post 方法。将 URL 作为第一个参数传递,将您的 JSON 字符串作为第二个参数传递。像这样的:

    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;
    

    我假设您已经能够对 JSON 进行编码和解码,并且您只是在询问如何使用 Delphi 执行 HTTP 发布。

    【讨论】:

    • ... 如果在 http.post() 中引发异常,则会泄漏内存(http+jsontosend 实例)...
    【解决方案2】:

    一个选项,使用我们的 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 文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2019-12-11
      • 2022-10-06
      • 2018-08-23
      • 2015-04-27
      • 2019-03-05
      • 2016-09-01
      相关资源
      最近更新 更多