如何阅读Indy IdHTTP获得的回复

时间:2015-02-11 19:20:20

标签: delphi indy

我编写了使用get with 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);

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

1 个答案:

答案 0 :(得分:12)

Get()退出时,流的Position位于流的末尾。您需要在调用Position之前将LoadFromStream()重置为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()将JSON作为String返回:

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