2011-12-20 1 views
0

J'utilise le code ci-dessous dans le fichier de configuration WebHarvest pour définir le délai d'expiration de l'élément http dans WebHarvest (Webharvest utilise Jakarta HttpClient).
Mais pendant que je le mets à 20000 cela prend environ 40-50 secondes jusqu'à ce que le timeout soit atteint!
Et quand je l'ai mis à 30000 timeout n'atteint jamais (au moins dans 2 minutes que j'ai attendu) !!
J'ai seulement besoin de limiter le temps d'attente de réponse.Définition du délai d'expiration http à jakarta HttpClient

<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> 

J'ai aussi essayé de le faire via le code Java lui-même o HttpClient par ce code:

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

Mais j'ai obtenu les mêmes résultats!
Comme this:

SO_TIMEOUT se mettra en marche seulement quand il y a une inactivité sur la connexion HTTP

Que puis-je faire pour définir une limite de temps d'attente pour une réponse?

Merci

Répondre

1

http.socket.timeout définit le temps d'attente entre deux paquets consécutifs. Donc, si des données arrivent très lentement, mais toujours assez rapidement pour ne pas déclencher le délai, la connexion ne sera pas coupée. Vous pouvez également définir http.connection.timeout pour limiter la durée d'attente jusqu'à l'établissement d'une connexion.

Cependant, il n'existe aucun moyen intégré pour définir une limite de temps difficile sur la longueur de la demande entière.

Questions connexes