如何阅读Indy IdHTTP获得的回复

Wel*_*Wel 1 delphi indy

我编写了使用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);
Run Code Online (Sandbox Code Playgroud)

这个url http://localhost/salesapp/is_run.php?ser=v返回JSON响应,但我不知道如何从Delphi中读取它.

Rem*_*eau 12

Get()退出时,流的Position是在流的末尾.您需要Position在调用之前将其重置为0 LoadFromStream(),否则它将无法加载任何内容:

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;
Run Code Online (Sandbox Code Playgroud)

另一种方法是删除TMemoryStream并让我们Get()返回JSON String:

memo1.Text := IdHTTP1.Get(get_url+'v');
Run Code Online (Sandbox Code Playgroud)