private void dispose() { if (this.consumed) { return; } try { final HttpEntity entity = this.response.getEntity(); final InputStream content = entity.getContent(); if (content != null) { content.close(); } } catch (final Exception ignore) { } finally { this.consumed = true; } }
@Test public void testCreateEntityInputChunked() throws Exception { final InputStream inStream = Mockito.mock(InputStream.class); final ClassicHttpResponse message = new BasicClassicHttpResponse(200, "OK"); final HttpEntity entity = conn.createIncomingEntity(message, conn.inBuffer, inStream, ContentLengthStrategy.CHUNKED); Assert.assertNotNull(entity); Assert.assertTrue(entity.isChunked()); Assert.assertEquals(-1, entity.getContentLength()); final InputStream content = entity.getContent(); Assert.assertNotNull(content); Assert.assertTrue((content instanceof ChunkedInputStream)); }
@Test public void testCreateEntityLengthDelimited() throws Exception { final InputStream inStream = Mockito.mock(InputStream.class); final ClassicHttpResponse message = new BasicClassicHttpResponse(200, "OK"); message.addHeader("Content-Length", "10"); message.addHeader("Content-Type", "stuff"); message.addHeader("Content-Encoding", "chunked"); final HttpEntity entity = conn.createIncomingEntity(message, conn.inBuffer, inStream, 10); Assert.assertNotNull(entity); Assert.assertFalse(entity.isChunked()); Assert.assertEquals(10, entity.getContentLength()); Assert.assertEquals("stuff", entity.getContentType()); Assert.assertEquals("chunked", entity.getContentEncoding()); final InputStream content = entity.getContent(); Assert.assertNotNull(content); Assert.assertTrue((content instanceof ContentLengthInputStream)); }
CombinedEntity(final HttpEntity entity, final ByteArrayBuffer buf) throws IOException { super(); this.entity = entity; this.combinedStream = new SequenceInputStream( new ByteArrayInputStream(buf.array(), 0, buf.length()), entity.getContent()); }
@Test public void testCreateEntityInputUndefined() throws Exception { final InputStream inStream = Mockito.mock(InputStream.class); final ClassicHttpResponse message = new BasicClassicHttpResponse(200, "OK"); final HttpEntity entity = conn.createIncomingEntity(message, conn.inBuffer, inStream, ContentLengthStrategy.UNDEFINED); Assert.assertNotNull(entity); Assert.assertFalse(entity.isChunked()); Assert.assertEquals(-1, entity.getContentLength()); final InputStream content = entity.getContent(); Assert.assertNotNull(content); Assert.assertTrue((content instanceof IdentityInputStream)); }
public static boolean equivalent(final HttpEntity e1, final HttpEntity e2) throws Exception { final InputStream i1 = e1.getContent(); final InputStream i2 = e2.getContent(); if (i1 == null && i2 == null) { return true; } if (i1 == null || i2 == null) { return false; // avoid possible NPEs below } int b1 = -1; while ((b1 = i1.read()) != -1) { if (b1 != i2.read()) { return false; } } return (-1 == i2.read()); }
if (entity != null) { buf = new ByteArrayBuffer(1024); final InputStream inStream = entity.getContent(); final byte[] tmp = new byte[2048]; long total = 0;
@Override public InputStream getContent() throws IOException { return wrappedEntity.getContent(); }
@Override public InputStream getContent() throws IOException { return wrappedEntity.getContent(); }
@Override public InputStream getContent() throws IOException { return wrappedEntity.getContent(); }
@Test public void testCombinedEntityBasics() throws Exception { final HttpEntity httpEntity = mock(HttpEntity.class); when(httpEntity.getContent()).thenReturn( new ByteArrayInputStream(new byte[] { 6, 7, 8, 9, 10 })); final ByteArrayBuffer buf = new ByteArrayBuffer(1024); final byte[] tmp = new byte[] { 1, 2, 3, 4, 5 }; buf.append(tmp, 0, tmp.length); final CombinedEntity entity = new CombinedEntity(httpEntity, buf); Assert.assertEquals(-1, entity.getContentLength()); Assert.assertFalse(entity.isRepeatable()); Assert.assertTrue(entity.isStreaming()); Assert.assertArrayEquals(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, EntityUtils.toByteArray(entity)); verify(httpEntity).getContent(); entity.close(); verify(httpEntity).close(); }
@Override public InputStream getContent() throws IOException, IllegalStateException { return original.getContent(); }
@Override public InputStream getContent() throws IOException { return wrappedEntity.getContent(); }
public void testCachedEntityBodyIsUsedForResponseAfter304Validation() throws Exception { final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control","max-age=3600"); resp1.setHeader("ETag","\"etag\""); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); req2.setHeader("Cache-Control","max-age=0, max-stale=0"); final ClassicHttpResponse resp2 = new BasicClassicHttpResponse(HttpStatus.SC_NOT_MODIFIED, "Not Modified"); backendExpectsAnyRequestAndReturn(resp1); backendExpectsAnyRequestAndReturn(resp2); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); final InputStream i1 = resp1.getEntity().getContent(); final InputStream i2 = result.getEntity().getContent(); int b1, b2; while((b1 = i1.read()) != -1) { b2 = i2.read(); Assert.assertEquals(b1, b2); } b2 = i2.read(); Assert.assertEquals(-1, b2); i1.close(); i2.close(); }
@Test public void test206ResponseGeneratedFromCacheMustHaveABodyThatMatchesContentLengthHeaderIfPresent() throws Exception { final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("ETag", "\"etag\""); resp1.setHeader("Cache-Control", "max-age=3600"); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); req2.setHeader("Range", "bytes=0-50"); backendExpectsAnyRequestAndReturn(resp1).times(1, 2); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); if (HttpStatus.SC_PARTIAL_CONTENT == result.getCode()) { final Header h = result.getFirstHeader("Content-Length"); if (h != null) { final int contentLength = Integer.parseInt(h.getValue()); int bytesRead = 0; final InputStream i = result.getEntity().getContent(); while ((i.read()) != -1) { bytesRead++; } i.close(); Assert.assertEquals(contentLength, bytesRead); } } }
private void dispose() { if (this.consumed) { return; } try { final HttpEntity entity = this.response.getEntity(); final InputStream content = entity.getContent(); if (content != null) { content.close(); } } catch (final Exception ignore) { } finally { this.consumed = true; } }
CombinedEntity(final HttpEntity entity, final ByteArrayBuffer buf) throws IOException { super(); this.entity = entity; this.combinedStream = new SequenceInputStream( new ByteArrayInputStream(buf.array(), 0, buf.length()), entity.getContent()); }
final InputStream i = result.getEntity().getContent(); int b; boolean found1 = false;
final InputStream i = result.getEntity().getContent(); int b; boolean found1 = false;
/** * Ensures that the entity content is fully consumed and the content stream, if exists, * is closed. * * @param entity the entity to consume. * @throws IOException if an error occurs reading the input stream * * @since 4.1 */ public static void consume(final HttpEntity entity) throws IOException { if (entity == null) { return; } if (entity.isStreaming()) { Closer.close(entity.getContent()); } }