public void saveContent(final File file) throws IOException { assertNotConsumed(); final int status = response.getCode(); if (status >= HttpStatus.SC_REDIRECTION) { throw new HttpResponseException(status, response.getReasonPhrase()); } try (FileOutputStream out = new FileOutputStream(file)) { final HttpEntity entity = this.response.getEntity(); if (entity != null) { entity.writeTo(out); } } finally { this.consumed = true; } }
public static boolean semanticallyTransparent( final ClassicHttpResponse r1, final ClassicHttpResponse r2) throws Exception { final boolean entitiesEquivalent = equivalent(r1.getEntity(), r2.getEntity()); if (!entitiesEquivalent) { return false; } final boolean statusLinesEquivalent = LangUtils.equals(r1.getReasonPhrase(), r2.getReasonPhrase()) && r1.getCode() == r2.getCode(); if (!statusLinesEquivalent) { return false; } return isEndToEndHeaderSubset(r1, r2); }
@Override public String getReasonPhrase() { return response.getReasonPhrase(); }
public void saveContent(final File file) throws IOException { assertNotConsumed(); final int status = response.getCode(); if (status >= HttpStatus.SC_REDIRECTION) { throw new HttpResponseException(status, response.getReasonPhrase()); } try (FileOutputStream out = new FileOutputStream(file)) { final HttpEntity entity = this.response.getEntity(); if (entity != null) { entity.writeTo(out); } } finally { this.consumed = true; } }
@Override protected void writeHeadLine( final ClassicHttpResponse message, final CharArrayBuffer lineBuf) throws IOException { final ProtocolVersion transportVersion = message.getVersion(); getLineFormatter().formatStatusLine(lineBuf, new StatusLine( transportVersion != null ? transportVersion : HttpVersion.HTTP_1_1, message.getCode(), message.getReasonPhrase())); }
@Override protected void writeHeadLine( final ClassicHttpResponse message, final CharArrayBuffer lineBuf) throws IOException { final ProtocolVersion transportVersion = message.getVersion(); getLineFormatter().formatStatusLine(lineBuf, new StatusLine( transportVersion != null ? transportVersion : HttpVersion.HTTP_1_1, message.getCode(), message.getReasonPhrase())); }
/** * Read the entity from the response body and pass it to the entity handler * method if the response was successful (a 2xx status code). If no response * body exists, this returns null. If the response was unsuccessful (>= 300 * status code), throws an {@link HttpResponseException}. */ @Override public T handleResponse(final ClassicHttpResponse response) throws IOException { final HttpEntity entity = response.getEntity(); if (response.getCode() >= HttpStatus.SC_REDIRECTION) { EntityUtils.consume(entity); throw new HttpResponseException(response.getCode(), response.getReasonPhrase()); } return entity == null ? null : handleEntity(entity); }
@Test public void testBasicMessageParsing() throws Exception { final String s = "HTTP/1.1 200 OK\r\n" + "Server: whatever\r\n" + "Date: some date\r\n" + "Set-Cookie: c1=stuff\r\n" + "\r\n"; final ByteArrayInputStream inputStream = new ByteArrayInputStream(s.getBytes(StandardCharsets.US_ASCII)); final SessionInputBuffer inBuffer = new SessionInputBufferImpl(16, StandardCharsets.US_ASCII.newDecoder()); final DefaultHttpResponseParser parser = new DefaultHttpResponseParser(); final ClassicHttpResponse httpresponse = parser.parse(inBuffer, inputStream); Assert.assertEquals(200, httpresponse.getCode()); Assert.assertEquals("OK", httpresponse.getReasonPhrase()); final Header[] headers = httpresponse.getHeaders(); Assert.assertEquals(3, headers.length); }
@Test public void testBasicMessageParsingLeadingEmptyLines() throws Exception { final String s = "\r\n" + "\r\n" + "HTTP/1.1 200 OK\r\n" + "Server: whatever\r\n" + "\r\n"; final ByteArrayInputStream inputStream = new ByteArrayInputStream(s.getBytes(StandardCharsets.US_ASCII)); final SessionInputBuffer inBuffer = new SessionInputBufferImpl(16, StandardCharsets.US_ASCII.newDecoder()); final DefaultHttpResponseParser parser = new DefaultHttpResponseParser( H1Config.custom().setMaxEmptyLineCount(3).build()); final ClassicHttpResponse httpresponse = parser.parse(inBuffer, inputStream); Assert.assertEquals(200, httpresponse.getCode()); Assert.assertEquals("OK", httpresponse.getReasonPhrase()); final Header[] headers = httpresponse.getHeaders(); Assert.assertEquals(1, headers.length); }
@Test public void testMessageParsingTimeout() throws Exception { final String s = "HTTP\000/1.1 200\000 OK\r\n" + "Server: wha\000tever\r\n" + "Date: some date\r\n" + "Set-Coo\000kie: c1=stuff\r\n" + "\000\r\n"; final TimeoutByteArrayInputStream inputStream = new TimeoutByteArrayInputStream(s.getBytes(StandardCharsets.US_ASCII)); final SessionInputBuffer inBuffer = new SessionInputBufferImpl(16); final DefaultHttpResponseParser parser = new DefaultHttpResponseParser(); int timeoutCount = 0; ClassicHttpResponse httpresponse = null; for (int i = 0; i < 10; i++) { try { httpresponse = parser.parse(inBuffer, inputStream); break; } catch (final InterruptedIOException ex) { timeoutCount++; } } Assert.assertNotNull(httpresponse); Assert.assertEquals(5, timeoutCount); Assert.assertEquals(200, httpresponse.getCode()); Assert.assertEquals("OK", httpresponse.getReasonPhrase()); final Header[] headers = httpresponse.getHeaders(); Assert.assertEquals(3, headers.length); }