2015-02-11 55 views
1

我已經寫代碼,使用與印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響應得到,但我不知道如何從德爾福閱讀。

+0

這是一種已知的格式,還是您自己製作的? – TLama 2015-02-11 19:32:56

+0

你的意思是PHP的迴應?我使用了'fetchAll(PDO :: FETCH_ASSOC)' – Wel 2015-02-11 19:36:40

+0

問題是你需要Delphi客戶端的解析器,並且我懷疑原始PHP結果集中有一個解析器。您應該以某種已知格式與客戶端交換數據,例如XML或JSON。 – TLama 2015-02-11 19:46:00

回答

6

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