我在将Indy HTTP(在Delphi中)与Google Contacts API结合使用时遇到问题。

请引用下一页的“ClientLogin响应”部分:

http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html

如预期的那样,当身份验证不正确或发生错误时,服务器将返回403。但是,根据该文档,在响应内容中存在客户端所需的信息,例如,错误原因和验证码网址等。

问题是Indy IdHTTP组件在403上引发异常,并且响应内容为空。到目前为止,我还没有找到该内容的方法。我尝试过尝试包装对Post的调用...除了读取响应流外,但在403上始终为空。

我将如何去做呢?

最佳答案

我找到了解决方案。内容似乎存储在EIdHTTPProtocolException的ErrorMessage字段中。

try
   http.Post('https://www.google.com/accounts/ClientLogin', slReq);
except
   on E: EIdHTTPProtocolException do
      Memo1.Lines.Add(E.ErrorMessage);
end;

似乎可以解决问题。

(顺便说一句,我正在使用Indy9。我确定Indy 10是类似的。)

关于delphi - Indy HTTP : reading response content on a 403,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/607876/

10-11 00:57