如何从 Indy IdHTTP get 读取响应

How to read response from Indy IdHTTP get

我已经编写了将 get 与 indy IdHTTP 组件一起使用的代码

var
get_url: string;
resp: TMemoryStream;
begin
  get_url := 'http://localhost/salesapp/is_run.php?ser=';
  resp := TMemoryStream.Create;

  IdHTTP1.Get(get_url+'v', resp);
  memo1.Lines.LoadFromStream(resp);

这个 url http://localhost/salesapp/is_run.php?ser=v return JSON 回复,但我不知道如何从 Delphi.

读取它

Get() 退出时,流的 Position 位于流的末尾。您需要在调用 LoadFromStream() 之前将 Position 重置回 0,否则它不会加载任何内容:

var
  get_url: string;
  resp: TMemoryStream;
begin
  get_url := 'http://localhost/salesapp/is_run.php?ser=';
  resp := TMemoryStream.Create;
  try
    IdHTTP1.Get(get_url+'v', resp);
    resp.Position := 0; // <-- add this!!
    memo1.Lines.LoadFromStream(resp);
  finally
    resp.Free;
  end;
end;

另一种方法是删除 TMemoryStream 并让 Get() return 将 JSON 作为 String 代替:

memo1.Text := IdHTTP1.Get(get_url+'v');