我一直在編寫一個用於StackApps API的Delphi庫。從TIdHttp獲取錯誤代碼400的響應
我遇到了Indy的問題。我正在使用Delphi 2010附帶的版本。 如果您將無效參數傳遞給其中一個StackApps API,它將返回一個HTTP錯誤代碼400,然後在響應中它將包含具有更多詳細信息的JSON對象。
通過在Chrome瀏覽器中訪問http://api.stackoverflow.com/0.8/stats/?Key=BadOnPurpose,您可以看到一個示例。 I.E. Firefox會隱藏JSON。
使用WireShark我可以看到JSON對象使用下面的代碼返回,但我無法使用Indy訪問它。
對於此測試代碼,我在表單上放置了一個TIdHttp組件,並在按鈕單擊中放置了以下代碼。
procedure TForm10.Button2Click(Sender: TObject);
var
SS : TStringStream;
begin
SS := TStringStream.Create;
IdHTTP1.Get('http://api.stackoverflow.com/0.8/stats/?Key=BadOnPurpose',SS,[400]);
Memo1.Lines.Text := SS.DataString;
SS.Free;
end;
我通過了[400],因此它不會引發400異常。這就好像印第停止閱讀迴應。由於Memo1的內容是空的。
我正在尋找一種獲取JSON細節的方法。
我糾正了。 – 2010-06-10 23:26:47
是的AIgnoreReplies真的很擅長忽略回覆:-) – 2010-06-10 23:33:52
我需要得到的迴應,所以你可以添加:Memo1.Lines.Add(IdHTTP1.ResponseText); – 2017-02-01 15:07:55