我在使用 Indy HTTP(在 Delphi 中)和 Google Contacts API 时遇到问题。
请参阅下页“客户端登录响应”部分:
http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html
当身份验证不正确或发生错误时,服务器会返回 403...正如预期的那样。然而,根据该文档,响应内容中存在客户端需要的信息,例如:错误原因、验证码URL等
问题是 Indy IdHTTP 组件在 403 上抛出异常,并且响应内容为空。到目前为止我还没有找到获取此内容的方法。我尝试将对 Post 的调用包装在 try... except 中,然后读取响应流,但在 403 上它总是为空。
我该怎么做呢?
我找到了解决方案。看起来内容存储在 EIdHTTPProtocolException 的 ErrorMessage 字段中。
try
http.Post('https://www.google.com/accounts/ClientLogin', slReq);
except
on E: EIdHTTPProtocolException do
Memo1.Lines.Add(E.ErrorMessage);
end;
似乎可以解决问题。
(顺便说一下,我使用的是 Indy 9。我确信 Indy 10 也类似。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)