J'ai écrit une bibliothèque Delphi pour StackApps API.Obtenir la réponse de TIdHttp avec le code d'erreur 400
J'ai rencontré un problème avec Indy. J'utilise la version fournie avec Delphi 2010. Si vous transmettez des paramètres non valides à l'une des API StackApps, il renvoie un code d'erreur HTTP 400, puis dans la réponse, il contient un objet JSON avec plus de détails.
En visitant http://api.stackoverflow.com/0.8/stats/?Key=BadOnPurpose dans le navigateur Chrome, vous pouvez voir un exemple. C'EST À DIRE. et Firefox cache le JSON. Utilisation de WireShark Je peux voir que l'objet JSON est renvoyé en utilisant le code ci-dessous, mais je suis incapable d'y accéder en utilisant Indy.
Pour ce code de test j'ai laissé tomber un composant TIdHttp sur le formulaire et placé le code suivant dans un clic de bouton.
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;
J'ai passé [400] pour ne pas déclencher l'exception 400. C'est comme si Indy avait cessé de lire la réponse. Comme le contenu de Memo1 est vide.
Je cherche un moyen d'obtenir les détails JSON.
Je suis corrigé. –
Et oui AIgnoreReplies est vraiment bon à ignorer les réponses :-) –
Je devais aussi obtenir la réponse, donc vous pouvez ajouter: Memo1.Lines.Add (IdHTTP1.ResponseText); –