Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IdHTTP 
:(
    Опции темы
slavonX86
Дата 12.3.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



Я захожу на саит. Идёт переадресация. Пишет: connecting to x.x.x.x.
Как зделать чтобы например через 60 сек (если не идёт загрузка) прерывалось получение документа.
PM MAIL ICQ   Вверх
Guedda
Дата 12.3.2006, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Ставь таймер на 60 секунд и учись задавать вопросы.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
slavonX86
Дата 13.3.2006, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



Есть компонент на форме IdHTTP1.

Я пишу запрос:
Код

IdHTTP1.Get('www.xxxxxxxx.ru');


В обработчике событий IdHTTP1Status переменная AStatusText: string принимает значение 'connecting to x.x.x.x'.

И на этом этапе остаётся программа !!!

Вопрос: как зделать стоп для этого запроса по истечению 60 сек ???

Это сообщение отредактировал(а) slavonX86 - 13.3.2006, 09:35
PM MAIL ICQ   Вверх
Romikgy
Дата 13.3.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Запускай таймер в
Цитата(slavonX86 @ 13.3.2006, 08:34 Найти цитируемый пост)
обработчике событий IdHTTP1Status

на 60 сек, при
Цитата(slavonX86 @ 13.3.2006, 08:34 Найти цитируемый пост)
'connecting to x.x.x.x'.

если таймер щелкул, делай дисконект


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 13.3.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Работу с http нужно вынести в отдельный thread.
PM MAIL   Вверх
slavonX86
Дата 13.3.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



Цитата(Snowy @ 13.3.2006, 11:52)
Работу с http нужно вынести в отдельный thread.

Я вынес в отдельный поток.
Добавлено @ 15:14
Пробовал:
Код

  IdHTTP1.ConnectTimeout := 60000;
  IdHTTP1.ReadTimeout := 60000;


не помогает.


P.S. > Оно подключается (т.е. подключение произошло и IdHTTP1.ConnectTimeout не катит), затем происходит преадресация. А IdHTTP1.ReadTimeout это вроди чтение данных из стека (т.е. тоже не подходит).
PM MAIL ICQ   Вверх
Snowy
Дата 13.3.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(slavonX86 @ 13.3.2006, 15:07 Найти цитируемый пост)
Я вынес в отдельный поток.
Ну так убей его через TerminateThread
PM MAIL   Вверх
Демо
Дата 13.3.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(slavonX86 @ 13.3.2006, 15:07 Найти цитируемый пост)
ReadTimeout это вроди чтение данных из стека (т.е. тоже не подходит).


ReadTimeout как раз подходит. Это время, в течение которого сервер должен вернуть ответ.
ConnectTimeOut - время на подключение.
Добавлено @ 23:24
Простейший пример:

Код

unit uHTTPThread;

interface

uses
  classes,IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type

  THTTPThreadComplete=procedure(const Result: String);

  THTTPThread=class(TThread)
  private
    FH: TIdHTTP;
    FQuery: String;
    FResult: String;
    FOnComplete: THTTPThreadComplete;
    procedure Complete;
  protected
    procedure Execute; override;
  public
    constructor Create(const Query: String; CompleteProc: THTTPThreadComplete);
  end;


implementation

{ THTTPThread }

procedure THTTPThread.Complete;
begin
  if Assigned(FOnComplete) then FOnComplete(FResult);
end;

constructor THTTPThread.Create(const Query: String;
  CompleteProc: THTTPThreadComplete);
begin
  inherited Create(True);
  FreeOnTerminate := True;
  FQuery := Query;
  FOnComplete := CompleteProc;
  FResult := '';
  Resume;
end;

procedure THTTPThread.Execute;
begin
  FH := TIdHTTP.Create(nil);
  FH.HandleRedirects := True;
[B]  FH.ReadTimeout := 10000;
  FH.ConnectTimeout := 10000;
[/B]  try
    try
      FResult := FH.Get(FQuery);
    except
    end;
  finally
    FH.Free;
  end;
  Synchronize(Complete);
end;

end.



И все прекрасно срабатывает.


--------------------
    
PM MAIL ICQ Skype   Вверх
slavonX86
Дата 24.4.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: нет
Всего: 0



ReadTimeout := 10000;    
ConnectTimeout := 10000;

А как тут время считается ?
-----------------------------------
ReadTimeout := 100000;    
ConnectTimeout := 10000;

Через 30 сек происходит
----------------------------------
ReadTimeout := 10000;    
ConnectTimeout := 10000;

Через 20 сек происходит
-----------------------------------
 

P.S. >> работаю через прокси
IDHTP1.Proxy..... 

Это сообщение отредактировал(а) slavonX86 - 25.4.2006, 18:36
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.