0

我需要发送一个包含 JSON 的 post 请求,如下所示:

[ { "sku": "AS12AS11S", "estoque": 3}, { "sku": "ASKD123F4", "estoque": 10} ]

我找到了插入单个 JSON 对象的示例。如何设置参数以发送多个 JSON 对象?

这是我拥有的实际代码。

var
  NetHTTPClient : TNetHTTPClient;
  parametres : Tstringlist;
begin
  parametres := tstringlist.Create;
  NetHTTPClient := TNetHTTPClient.Create(nil);

  parametres .Add('nom_logiciel='+UTF8Encode('éè'));
  parametres .Add('emplacement='+EncodeURIComponent('éè') );
  parametres .Add('version='+ 'éè');

  NetHTTPClient.ContentType := 'application/json';
  NetHTTPClient.AcceptEncoding := 'UTF-8';

  NetHTTPClient.post('http://metaclients.xxx.fr/xxx',parametres,nil,TEncoding.UTF8).ContentAsString(tencoding.UTF8);

  parametres .Free;
  NetHTTPClient.Free;
end;
4

1 回答 1

2

使用TNetHTTPClient.Post()将 aTStream作为输入而不是 a的重载版本TStrings。然后您可以根据需要将您的 JSON 存储到合适TStream的文件中,例如TStringStream.

var
  NetHTTPClient : TNetHTTPClient;
  parametres : TStringStream;
begin
  NetHTTPClient := TNetHTTPClient.Create(nil);
  try
    NetHTTPClient.ContentType := 'application/json';
    NetHTTPClient.AcceptEncoding := 'UTF-8';

    parametres := TStringStream.Create('[{"sku": "AS12AS11S", "estoque": 3}, {"sku": "ASKD123F4", "estoque": 10}]', TEncoding.UTF8);
    try
      Result := NetHTTPClient.Post('http://metaclients.xxx.fr/xxx', parametres).ContentAsString(TEncoding.UTF8);
    finally
      parametres.Free;
    end;
  finally
    NetHTTPClient.Free;
  end;
end;
于 2019-09-09T19:39:20.533 回答