2012-02-27 16 views
2

私はハイブリッド(Web /デスクトップ)ソフトウェアを作成していますが、2つのモジュール間で同期がロードされています。TidHTTPClientはコード304でタイムアウト例外を発生させます

私はできるだけ多くのHTTPコードをそれらの間の通信に使用しようとしています。

私はRails 3とRuby 1.9を持っています(この問題については重要です)。デスクトップ側では、Delphi 7とIndy 9.0.50を使用しています。

更新されたデータを取得しようとすると、サーバー側に新しいものはありません。この場合、私のサーバーAPIはコード304(変更されていません)を返します。しかし、インディコンポーネント(TidHTTPClient)はタイムアウト例外(EIdReadTimeout)を発生させます。そしてそれは実際には数秒間待っているので、私が快適でないという遅れが生じます。

この動作は問題ありませんか?不適切なHTTPコードを使用していますか?コンポーネントが確実に来ないとデータを待つことを避ける方法はありますか?

+0

この例外は、IDEでアプリケーションを実行しているときに発生しますか?そうであれば、try..exceptとTIが実行していない間にTIdHTTPClient.GETを実行すると、例外が発生しないはずです... – ComputerSaysNo

+0

2つの問題があります。第1に、応答304は「条件付きGET」要求であり、条件付きGETリクエストを送信していますか?第二に、インディ9は古代です。バージョン10にアップグレードしてください。タイムアウトする理由は分かりません。デバッガを使用して何が起きているかを確認し、逆戻りしてIndyがタイムアウトが発生したと判断した理由を確認します。 –

答えて

6

TIdHTTP Indy 9では、条件付きGET要求をサポートしていません。 Indy 10のTIdHTTPは無効で、一部のオーバーロードされたバージョンGet()にはAIgnoreRepliesという新しいパラメータがあり、の例外が発生した場合は304に渡すことができます。

関連する問題