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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to