TidHTTPClient повышение исключения тайм-аута по коду 304 - PullRequest
2 голосов
/ 28 февраля 2012

Я пишу гибридное (веб / настольное) программное обеспечение, и оно загружается синхронизациями между двумя модулями.

Я пытаюсь использовать как можно больше HTTP-кодов для связи между ними.

На стороне сервера у меня есть Rails 3 и Ruby 1.9 (если это имеет значение для этого вопроса).В настольных компьютерах я использую Delphi 7 и Indy 9.0.50.

Когда я пытаюсь получить обновленные данные, и на стороне сервера нет ничего нового, мой серверный API возвращает код 304 (без изменений), который японимать как наиболее подходящий код в этом случае.Но компонент indy (TidHTTPClient) вызывает исключение тайм-аута (в частности, EIdReadTimeout).И он на самом деле «ждет» несколько секунд, вызывая задержку, с которой мне не по себе.

Это поведение нормально?Я использую неподходящий код HTTP?Есть ли способ избежать ожидания компонентом данных, если они точно никогда не появятся?

1 Ответ

6 голосов
/ 28 февраля 2012

TIdHTTP в Indy 9 не поддерживает условные GET запросы.TIdHTTP в Indy 10 имеет, и некоторые из перегруженных версий Get() имеют новый параметр AIgnoreReplies, который можно передать 304, если возникают EIdHTTPProtocolException исключения.

...