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]

Reply via email to