Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > IdHttp разрывает соединение


Автор: x77 17.4.2006, 18:22
делаю Connect к какому-то хосту и далее работаю через Get/Post. проблема в том, что для каждого Get/Post IdHttp принудительно разрывает коннект и коннектиться заново.

как можно заставить его этого не делать? 

Автор: Matematik 18.4.2006, 07:58
Поставить версию протокола 1,1
Заголовок Connection: keep-alive, но мне кажется он автоматом включается. 

Автор: x77 18.4.2006, 11:46
да ставил.....  нарылось вот что:
Код
procedure TIdCustomHTTP.Post(AURL: string; const ASource, AResponseContent: TStream);
var
  OldProtocol: TIdHTTPProtocolVersion;
begin
  // PLEASE READ CAREFULLY

  // Currently when issuing a POST, IdHTTP will automatically set the protocol
  // to version 1.0 independently of the value it had initially. This is because
  // there are some servers that don't respect the RFC to the full extent. In
  // particular, they don't respect sending/not sending the Expect: 100-Continue
  // header. Until we find an optimum solution that does NOT break the RFC, we
  // will restrict POSTS to version 1.0.
  if Connected then
  begin
    Disconnect;
  end;
  OldProtocol := FProtocolVersion;
  // If hoKeepOrigProtocol is SET, is possible to assume that the developer
  // is sure in operations of the server
  if not (hoKeepOrigProtocol in FOptions) then
    FProtocolVersion := pv1_0;
  DoRequest(hmPost, AURL, ASource, AResponseContent);
  FProtocolVersion := OldProtocol;
end;


видимо, лыжа это. он всегда разрывает коннект для поста. странно, почему?? и зачем?  

Автор: Snowy 18.4.2006, 12:06
Так и должно быть. Так уж устроен протокол HTTP - соединение-запрос-отсоединение.

Добавлено @ 12:12 
Цитата(x77 @  17.4.2006,  18:22 Найти цитируемый пост)
как можно заставить его этого не делать? 
Ответ виден в этом коде - делать не POST, а DoRequest. 

Автор: x77 18.4.2006, 12:14
Snowy, угу, спасибо. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)