我在将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/