StackApps API用の Delphi ライブラリを作成しています。
Indy で問題が発生しました。Delphi 2010 に同梱されているバージョンを使用しています。無効なパラメータをいずれかの StackApps API に渡すと、HTTP エラー コード 400 が返され、応答に詳細を含む JSON オブジェクトが含まれます。
Chrome ブラウザでhttp://api.stackoverflow.com/0.8/stats/?Key=BadOnPurposeにアクセスすると、例が表示されます。IE と 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 の詳細を取得する方法を探しています。