Inconsistent, order dependant behaviour in HttpMethodBase.getResponse* ----------------------------------------------------------------------
Key: HTTPCLIENT-651 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-651 Project: HttpComponents HttpClient Issue Type: Bug Components: HttpClient Reporter: Mirko Friedenhagen Priority: Minor `getReponseBodyAsString` is storing the body and may therefore provide a valid result if the code is requesting the body as stream afterwards. If you switch the order and first call getResponseBodyAsStream and afterwards try to `getReponseBodyAsString`, the result will be `null`. I wrote a unittest which hopefully describes the IMHO confusing behaviour: public void testHttpClientBodyVsStream() throws HttpException, IOException { final HttpClient httpClient = new HttpClient(); final GetMethod getMethod = new GetMethod("http://www.heise.de/"); final String bodyFromStream; final String body; try { httpClient.executeMethod(getMethod); body = getMethod.getResponseBodyAsString(); bodyFromStream = IOUtils.toString(getMethod .getResponseBodyAsStream()); } finally { getMethod.releaseConnection(); } assertEquals(body, bodyFromStream); } public void testHttpClientStreamVsBody() throws HttpException, IOException { final HttpClient httpClient = new HttpClient(); final GetMethod getMethod = new GetMethod("http://www.heise.de/"); final String bodyFromStream; final String body; try { httpClient.executeMethod(getMethod); bodyFromStream = IOUtils.toString(getMethod .getResponseBodyAsStream()); body = getMethod.getResponseBodyAsString(); } finally { getMethod.releaseConnection(); } // ** This will fail ** assertEquals(body, bodyFromStream); } Searching http://svn.apache.org/repos/asf/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java I understand the outcome, but this is confusing. I would expect the body data to be gone after calling one of the getResponse*-Methods and calling them again not to return null but even to throw an IllegalStateException. I would not store the body at all in the method. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]