Я пытаюсь установить время ожидания соединения 6 с для не отвечающих сайтов на TNetHTTPClient с помощью:
NetHTTPClient1.ConnectionTimeout := 6000;
Но это не работает, время ожидания кажется всегда одинаковым по умолчанию (около 1 мин.) Я что-то упускаю из-за ConnectionTimeout или из моего кода?
Редактировать: ОК, моя ошибка, для этого теста я использовал (плохой) прокси, и это был прокси, который не отвечал.Таким образом, кажется, что ConnectionTimeout не эффективен в случае отсутствия ответа прокси.Я опубликую пример кода режима с проблемой.
Редактировать 2: Таким образом, кажется, что это скорее «тайм-аут разрешения», чем «тайм-аут соединения», код: сначала с классическим соединением все в порядке (даже если тайм-аут не очень точный).
TempTime := Now; //TempTime : TDateTime;
try
NetHTTPClient1.ConnectionTimeout := 2000; // NetHTTPClient1 : TNetHTTPClient;
NetHTTPClient1.Get('http://www.google.com:81');
except
on E: Exception do
showmessage(E.ClassName + ' : ' + E.Message + ', Time : ' + IntToStr(trunc((Now-TempTime)*86400)));
end;
Теперь тайм-аут не в порядке (с плохим прокси):
NetHTTPClient1.ProxySettings := TProxySettings.Create('157.230.8.180',8080);
TempTime := Now;
try
NetHTTPClient1.ConnectionTimeout := 2000;
NetHTTPClient1.Get('http://www.google.com:81');
except
on E: Exception do
showmessage(E.ClassName + ' : ' + E.Message + ', Time : ' + IntToStr(trunc((Now-TempTime)*86400)));
end;