Quelle est la différence entre le setConnectionTimeout , setSoTimeout et “http".connexion-manager.timeout” dans apache HttpClient API
Quelle est la différence entre les trois(marqué en commentaires) :
MultiThreadedHttpConnectionManager connManag = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams managParams = connManag.getParams();
managParams.setConnectionTimeout(connectiontimeout); //1
managParams.setSoTimeout(sotimeout); //2
HttpMethodBase baseMethod = null;
try {
HttpClient client = new HttpClient(connManag);
client.getParams().setParameter("http.connection-manager.timeout", poolTimeout); //3
baseMethod = new GetMethod(…);
int statusCode = client.executeMethod(…);
…
}
catch (ConnectTimeoutException cte ){
//Took too long to connect to remote host
}
catch (SocketTimeoutException ste){
//Remote host didn’t respond in time
}
catch (Exception se){
//Some other error occurred
}
finally {
if (baseMethod != null)
baseMethod.releaseConnection();
}
1. setConnectionTimeout
- s'il détermine le délai d'attente jusqu'à ce que la connexion est établie.
2. setSoTimeout
- si elle détermine la période d'inactivité ou de la différence de temps entre deux paquets consécutifs ,
Alors qu'est-ce que le dessous de l'un n' :
3. "http.connection-manager.timeout"
- Ce qui ne les docs disent? Sont-ils silencieux?
- Pas en mesure de understabd c'est pourquoi posté ici
- Vous devriez au moins mentionner que vous les avez lues, et de souligner certains aspects qui vous trouble. De cette façon, votre question ressemble vous êtes juste de nous demander d'aller lire la documentation pour vous.
Vous devez vous connecter pour publier un commentaire.
Au niveau le plus bas HTTP est le protocole TCP socket. Ainsi, lorsque vous demandez une URL et obtenir une réponse, au niveau inférieur, un client Socket est créée qui établit la connexion à distance au Serveur de Socket, envoie des données et reçoit la réponse.
setConnectionTimeout : le Client essaye de se connecter au serveur. Ceci indique le temps écoulé avant que la connexion établie ou le Serveur a répondu à la demande de connexion.
setSoTimeout : Après établissement de la connexion, le client socket attend la réponse après l'envoi de la demande. C'est le temps écoulé depuis que le client a envoyé la demande au serveur avant de serveur répond. Veuillez noter que ce n'est pas la même que
HTTP Error 408
que le serveur envoie au client. En d'autres termes, son maximale de la période d'inactivité entre deux années consécutives de paquets de données en arrivant à côté client une fois la connexion établie.http.connexion-manager.délai d'attente :
MultiThreadedHttpConnectionManager
utilise un pool de connexions HTTP. Il a des valeurs minimales et maximales pour chaque hôte défini. Si toutes les connexions pour l'hôte particulier sont a atteint la valeur max., la demande pour une nouvelle connexion pour la même hôte devrez attendre jusqu'à l'une quelconque de la connexion existante devient gratuit. Ce paramètre indique le temps écoulé lorsqu'une demande de connexion a été effectuée et avant laHttpConnectionManager
retourné une connexion.HttpClient
, vous n'avez pas à traiter avec des sockets directement. Même en cas deHttpClient
il existe une méthode (httpclient.getConnectionManager().shutdown();
) pour arrêter la la trèsHttpClient
qui fait le travail de la fermeture de la connexions.HttpConnectionManagerParams.setSoTimeout()
.Ce diagramme de séquence peut aider.
Explication détaillée est fournie dans La gestion de la connexion de la documentation sur HTTP Apache du site du client.
Juste pour le record
est autre façon de faire
HttpGet
ou d'autres méthodes.httpGet.setConfig(requestConfig);
.-1
, qui signifie "non défini(par défaut)".En termes simples: