Установка http таймаута в Джакарте HttpClient - PullRequest
0 голосов
/ 21 декабря 2011

Я использую приведенный ниже код в файле конфигурации WebHarvest, чтобы определить время ожидания для элемента http в WebHarvest (Webharvest использует Jakarta HttpClient).
Но хотя я устанавливаю его на 20000, до истечения времени ожидания уходит около 40-50 секундполучите!
И когда я установлю его на 30000, тайм-аут никогда не наступит (по крайней мере, через 2 минуты, что я ждал) !!
Мне нужно только ограничить время ожидания ответа.

<var-def name="WTimeOut">20000</var-def>
<script language="javascript"> 
       var tmot=WTimeOut.toString(); 
       http.client.params.soTimeout = tmot; 
       http.client.params.connectionManagerTimeout = tmot;
       http.client.httpConnectionManager.params.connectionTimeout = tmot; 
</script> 

Я также пытался сделать это через сам код Java o HttpClient с помощью этого кода:

HttpClient whClient = scraper.getHttpClientManager().getHttpClient();
whClient.getParams().setParameter("http.connection-manager.timeout", (long)20000);
whClient.getParams().setParameter("http.socket.timeout",(int)20000);

Но я получил те же результаты!
Как this :

SO_TIMEOUT срабатывает только при отсутствии активности в HTTP-соединении

Так что я могу сделать, чтобы установить ограничение времени ожидания ответа?

Спасибо

1 Ответ

1 голос
/ 27 декабря 2011

http.socket.timeout устанавливает время ожидания между двумя последовательными пакетами.Поэтому, если данные поступают очень медленно, но все еще достаточно быстро, чтобы не вызывать тайм-аут, соединение не будет разорвано.

Вы также можете установить http.connection.timeout для ограничениявремя ожидания до установления соединения.

Однако нет встроенного способа установить жесткое ограничение продолжительности всего запроса.

...