Return-Path: X-Original-To: apmail-hc-httpclient-users-archive@www.apache.org Delivered-To: apmail-hc-httpclient-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 82B807FC9 for ; Thu, 6 Oct 2011 10:00:18 +0000 (UTC) Received: (qmail 5767 invoked by uid 500); 6 Oct 2011 10:00:18 -0000 Delivered-To: apmail-hc-httpclient-users-archive@hc.apache.org Received: (qmail 5733 invoked by uid 500); 6 Oct 2011 10:00:18 -0000 Mailing-List: contact httpclient-users-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpClient User Discussion" Delivered-To: mailing list httpclient-users@hc.apache.org Received: (qmail 5724 invoked by uid 99); 6 Oct 2011 10:00:18 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Oct 2011 10:00:18 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of hosier.david@me.com designates 17.148.16.93 as permitted sender) Received: from [17.148.16.93] (HELO asmtpout018.mac.com) (17.148.16.93) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Oct 2011 10:00:10 +0000 MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-disposition: inline Content-type: text/plain; CHARSET=US-ASCII Received: from meshuggah (99-0-2-22.lightspeed.flsmca.sbcglobal.net [99.0.2.22]) by asmtp018.mac.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPSA id <0LSN00GM12FO4N00@asmtp018.mac.com> for httpclient-users@hc.apache.org; Thu, 06 Oct 2011 02:59:49 -0700 (PDT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.4.6813,1.0.211,0.0.0000 definitions=2011-10-06_03:2011-10-06,2011-10-06,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 ipscore=0 suspectscore=9 phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=6.0.2-1012030000 definitions=main-1110060045 Date: Thu, 06 Oct 2011 02:59:48 -0700 From: David Hosier To: HttpClient User Discussion Message-id: <383F75F72EF24E4EB1035DF7F85FC96F@me.com> In-reply-to: References: <1317892944.3337.195.camel@ubuntu> Subject: Re: Broken BasicResponseHandler X-Mailer: Apple Mail (1.4.904) / sparrow 1.4 (build 904) Ok, I see what the difference is in this situation. I am not passing the ResponseHandler to the execute() method. I am actually calling handleResponse() on the ResponseHandler manually. The problem I have with the implementation is that I return error messages on error conditions. With the way this works, you can only get very basic information from the HttpResponseException. For example, on a 404, it looks like the Exception only contains 404 and 'Not Found'. I am able to pluck out the entity when invoking handleResponse() manually by simply consuming the entity myself, but it's not possible to get the entity if the ResponseHandler is passed to execute() and the status is not 2xx. Am I off base here or is my analysis correct? Would you recommend that if I really need the entity on a non-2xx response that I just keep manually consuming the entity? I'm not sure it would make sense for your library to attempt to consume the entity in BasicResponseHandler and try to add it as an other fi eld to the HttpResponseException. The AbstractHttpClient code you linked me to would have to change if you did that. -- David Hosier On Thursday, October 6, 2011 at 2:30 AM, David Hosier wrote: > On Thursday, October 6, 2011 at 2:22 AM, Oleg Kalnichevski wrote: > > 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. > Interesting. Thanks for the link to the code. I can assure you that in my situation however, that the connections are not getting closed. I'll take a closer look at the code and compare it to this linked code to see if I'm using the right stuff. My assumption at this point then is that I'm just doing something wrong. Thanks. > > > > Oleg > > > > [1] > > http://hc.apache.org/httpcomponents-client-ga/httpclient/xref/org/apache/http/impl/client/AbstractHttpClient.html#930 > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org (mailto:httpclient-users-unsubscribe@hc.apache.org) > > > For additional commands, e-mail: httpclient-users-help@hc.apache.org (mailto:httpclient-users-help@hc.apache.org) > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org (mailto:httpclient-users-unsubscribe@hc.apache.org) > > For additional commands, e-mail: httpclient-users-help@hc.apache.org (mailto:httpclient-users-help@hc.apache.org) > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org (mailto:httpclient-users-unsubscribe@hc.apache.org) > For additional commands, e-mail: httpclient-users-help@hc.apache.org (mailto:httpclient-users-help@hc.apache.org) --------------------------------------------------------------------- To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org For additional commands, e-mail: httpclient-users-help@hc.apache.org