On Wed, 2011-10-05 at 13:44 -0700, David Hosier wrote: > Perhaps I'm wrong, but the code for BasicResponseHandler in httpclient 4.1.2 > does not satisfy the javadocs as written. The javadoc states the following: > > "If the response code was >= 300, the response body is consumed and an > HttpResponseException > (http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/HttpResponseException.html) > is thrown." > > However, the code does not do that: > > StatusLine statusLine = response.getStatusLine(); > if (statusLine.getStatusCode() >= 300) { > throw new HttpResponseException(statusLine.getStatusCode(), > statusLine.getReasonPhrase()); > } > > HttpEntity entity = response.getEntity(); > return entity == null ? null : EntityUtils.toString(entity); > > The code clearly throws the Exception without reading the entity. So what > happens is that if you get a non-2xx response, connections are never released > as can be seen by enabling DEBUG logging for the library. Am I misreading the > code or javadocs, or is this really broken? If I catch the Exception and then > read the entity manually like shown above, I can see the connections being > closed. > > -David >
Hi David The resource management is taken care of by HttpClient [1]. I do not think BasicResponseHandler is broken. The whole point of ResponseHandler is to free the user from having to worry about resource management and response entities. Oleg [1] http://hc.apache.org/httpcomponents-client-ga/httpclient/xref/org/apache/http/impl/client/AbstractHttpClient.html#930 > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
