Delphi 如何从Indy IdHTTP get读取响应

Delphi 如何从Indy IdHTTP get读取响应,delphi,indy,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); 此urlhttp://

我已经编写了使用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
返回JSON响应,但我不知道如何从Delphi读取它。

Get()
退出时,流的
位置位于流的末尾。在调用
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;
Get()
退出时,流的
位置
位于流的末尾。在调用
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;

这是一个已知的格式还是你自己编的?你是说PHP响应?我使用了
fetchAll(PDO::FETCH_ASSOC)
问题是,您需要在Delphi客户端上使用解析器,我怀疑是否有一个用于原始PHP结果集的解析器。您应该以一些已知的格式与客户端交换数据,例如XML或JSON。如果我返回JSON,我如何从indy组件读取它?您不使用indy读取JSON。您使用Indy检索或获取JSON,然后从您的Delphi代码中读取JSON。这是一种已知格式还是您自己编写的格式?您是指PHP响应?我使用了
fetchAll(PDO::FETCH_ASSOC)
问题是,您需要在Delphi客户端上使用解析器,我怀疑是否有一个用于原始PHP结果集的解析器。您应该以一些已知的格式与客户端交换数据,例如XML或JSON。如果我返回JSON,我如何从indy组件读取它?您不使用indy读取JSON。您可以使用Indy检索或获取JSON,然后从Delphi代码中读取JSON。