如何读取印IdHTTP响应得到
问题描述:
我已经写代码,使用与印IdHTTP组件如何读取印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响应得到,但我不知道如何从德尔福阅读。
答
当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()
回报JSON作为String
代替:
memo1.Text := IdHTTP1.Get(get_url+'v');
+0
我用另一种方式,我爱你....很多谢谢 – Wel 2015-02-11 21:50:30
这是一种已知的格式,还是您自己制作的? – TLama 2015-02-11 19:32:56
你的意思是PHP的回应?我使用了'fetchAll(PDO :: FETCH_ASSOC)' – Wel 2015-02-11 19:36:40
问题是你需要Delphi客户端的解析器,并且我怀疑原始PHP结果集中有一个解析器。您应该以某种已知格式与客户端交换数据,例如XML或JSON。 – TLama 2015-02-11 19:46:00