2010-07-01 21 views
1

J'utilise apache httpclient 4.0 pour se connecter à un flux vidéo (motion jpeg) sur http. Voici mon code:Apache httpclient fait beaucoup de connexions

DefaultHttpClient client; 

HttpParams params = new BasicHttpParams(); 

List<String> authpref = new ArrayList<String>(); 
authpref.add(AuthPolicy.DIGEST); 
authpref.add(AuthPolicy.BASIC); 

params.setParameter("http.auth.proxy-scheme-pref", authpref); 
params.setParameter("http.protocol.handle-authentication", Boolean.TRUE); 

SchemeRegistry schemeRegistry = new SchemeRegistry(); 

schemeRegistry.register(
    new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 

ClientConnectionManager connectionManager = 
    new ThreadSafeClientConnManager(params, schemeRegistry); 

client = new DefaultHttpClient(connectionManager, params); 

client.getCredentialsProvider().setCredentials(
    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
    new UsernamePasswordCredentials(username, password)); 

HttpResponse videoResponse = client.execute(new HttpGet(url)); 

Le problème est que la ligne client.execute() semble faire des centaines de connexions au flux vidéo. Je peux le voir en ouvrant une session sur le serveur et en faisant un netstat: il y a énormément de connexions au port 80 et elles sont toutes bloquées dans l'état TIME_WAIT.

Est-ce que je fais quelque chose de mal ici? Que se passe-t-il?

Merci pour l'aide.

Répondre