TidHTTPClient在代码304上引发超时异常

时间:2012-02-27 22:32:43

标签: delphi indy

我正在编写一个混合(Web /桌面)软件,它恰好在两个模块之间加载了同步。

我试图在它们之间的通信中使用尽可能多的HTTP代码。

在服务器端,我有Rails 3和Ruby 1.9(如果这个问题很重要)。在桌面方面,我使用的是Delphi 7和Indy 9.0.50。

当我尝试获取更新的数据并且服务器端没有任何新内容时,我的服务器API返回代码304(未修改),我理解为这种情况下最合适的代码。但是indy组件(TidHTTPClient)引发了一个Timeout Exception(特定于EIdReadTimeout)。它实际上“等待”几秒钟,导致延迟,我不舒服。

这种行为可以吗?我使用的是不合适的HTTP代码吗?有没有办法避免组件一旦永远无法确定等待数据?

1 个答案:

答案 0 :(得分:6)

Indy 9中的

TIdHTTP不支持条件GET请求。 Indy 10中的TIdHTTP确实存在,并且Get()的一些重载版本有一个新的AIgnoreReplies参数,如果304例外情况可以通过EIdHTTPProtocolException提高。