我正在编写一个混合(Web /桌面)软件,它恰好在两个模块之间加载了同步。
我试图在它们之间的通信中使用尽可能多的HTTP代码。
在服务器端,我有Rails 3和Ruby 1.9(如果这个问题很重要)。在桌面方面,我使用的是Delphi 7和Indy 9.0.50。
当我尝试获取更新的数据并且服务器端没有任何新内容时,我的服务器API返回代码304(未修改),我理解为这种情况下最合适的代码。但是indy组件(TidHTTPClient)引发了一个Timeout Exception(特定于EIdReadTimeout)。它实际上“等待”几秒钟,导致延迟,我不舒服。
这种行为可以吗?我使用的是不合适的HTTP代码吗?有没有办法避免组件一旦永远无法确定等待数据?
答案 0 :(得分:6)
TIdHTTP
不支持条件GET
请求。 Indy 10中的TIdHTTP
确实存在,并且Get()
的一些重载版本有一个新的AIgnoreReplies
参数,如果304
例外情况可以通过EIdHTTPProtocolException
提高。