My thinking was - If there is no obvious "close" method anywhere, and
all examples I've seen of the HttpClient do not mention a close/finish
type method then you would assume that it just handles it for you!

Looks like that is not always the case, at least in a timely fashion.

Thanks ernestw I'll have a look at consumeContent, but I got around
the issue another way which I documented in a blog post:
http://androidisland.blogspot.com/2010/11/httpclient-and-connectionpooltimeoutexc.html

Regards,
Eurig Jones

On Nov 17, 3:02 pm, ernestw <[email protected]> wrote:
> I've run into a similar issue which was solved by making sure to
> always call consumeContent on the HttpEntity contained in the
> HttpResponse object (regardless of the response code).  HttpClient
> tries to use keep-alive; if you don't consume every request before
> they are returned to the ThreadSafeClientConnManager, you're left with
> an open connection that isn't expecting to service a new request.
>
> If you *really* wanted to, you could grab the ClientConnectionManager
> from the DefaultHttpClient and call closeIdleConnections.  I highly
> suggest that you attempt to properly consume HttpEntity objects before
> using closeIdleConnections though.
>
>   Ernest Woo
>   Woo Games
>  http://www.woogames.com
>
> On Nov 14, 5:37 pm, Eurig Jones <[email protected]> wrote:
>
>
>
>
>
>
>
> > I'm having an issue with the HttpClient. It is throwing this exception
> > quite consistently after 3 requests to the same location...
>
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152): fetch() sending failed
> > to url http://...<myUrl>...
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):
> > org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting
> > for connection
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolBy 
> > Route.java:
> > 353)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.conn.tsccm.ConnPoolByRoute
> > $1.getPoolEntry(ConnPoolByRoute.java:238)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
> > $1.getConnection(ThreadSafeClientConnManager.java:175)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDi 
> > rector.java:
> > 325)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.j 
> > ava:
> > 555)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.j 
> > ava:
> > 487)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.j 
> > ava:
> > 465)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > chesspresso.client.android.net.HttpCall.fetch(HttpCall.java:111)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > chesspresso.client.android.net.HttpCall.fetch(HttpCall.java:132)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > chesspresso.client.android.net.HttpCall.post(HttpCall.java:102)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > chesspresso.client.android.net.ServerCall.registerGoogle(ServerCall.java:
> > 91)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > chesspresso.client.android.activity.RegisterGActivity
> > $RegisterTask.doInBackground(RegisterGActivity.java:201)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > chesspresso.client.android.activity.RegisterGActivity
> > $RegisterTask.doInBackground(RegisterGActivity.java:1)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > android.os.AsyncTask$2.call(AsyncTask.java:185)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > java.util.concurrent.FutureTask.run(FutureTask.java:137)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
> > 1068)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > java.util.concurrent.ThreadPoolExecutor
> > $Worker.run(ThreadPoolExecutor.java:561)
> > 11-14 22:27:37.299: INFO/
> > chesspresso.client.android.net.HttpCall(29152):     at
> > java.lang.Thread.run(Thread.java:1096)
>
> > Max connections seems to be 20 in my connection manager.
>
> > Here is my HttpClient creation code...
>
> > ...
> > private static DefaultHttpClient httpClient;
>
> > static
> > {
> >     HttpParams params = new BasicHttpParams();
> >     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>
> >     SchemeRegistry schemeRegistry = new SchemeRegistry();
> >     schemeRegistry.register(new Scheme("http",
> > PlainSocketFactory.getSocketFactory(), 80));
>
> >     HttpConnectionParams.setConnectionTimeout(params,
> > ClientConfig.P_DEFAULT_CONN_TIMEOUT);
> >     HttpConnectionParams.setSoTimeout(params,
> > ClientConfig.P_DEFAULT_CONN_TIMEOUT);
> >     ConnManagerParams.setTimeout(params,
> > ClientConfig.P_DEFAULT_CONN_TIMEOUT);
>
> >     httpClient = new DefaultHttpClient(new
> > ThreadSafeClientConnManager(params, schemeRegistry), params);}
>
> > ...
>
> > I noticed that a few users of Axis2 framework have reported very
> > similar symptoms again after 3 requests to the same url. Axis2 uses
> > Apache HttpClient under the bonnet also.
>
> > Has anyone experienced a similar issue?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to