You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2026/10/14 12:44:25 UTC
(httpcomponents-client) branch master updated: Always use maxResultLength constraint with EntityUtils#toByteArray and EntityUtils#toString
This is an automated email from the ASF dual-hosted git repository.
ok2c pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
The following commit(s) were added to refs/heads/master by this push:
new 4456b34c7 Always use maxResultLength constraint with EntityUtils#toByteArray and EntityUtils#toString
4456b34c7 is described below
commit 4456b34c78ad1dacd08a2e3e2da94f24ecc49642
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Wed Oct 14 14:37:20 2026 +0200
Always use maxResultLength constraint with EntityUtils#toByteArray and EntityUtils#toString
---
.../hc/client5/http/impl/cache/TestCachingExecChain.java | 2 +-
.../hc/client5/http/impl/cache/TestCombinedEntity.java | 2 +-
.../hc/client5/http/fluent/ContentResponseHandler.java | 4 ++--
.../java/org/apache/hc/client5/http/fluent/Executor.java | 1 -
.../java/org/apache/hc/client5/http/fluent/Response.java | 2 +-
.../hc/client5/http/rest/RestClientBuilderTest.java | 4 ++--
.../apache/hc/client5/testing/classic/EchoHandler.java | 2 +-
.../hc/client5/testing/TestValidateAfterInactivity.java | 5 +++--
.../hc/client5/testing/async/TestClassicOverAsync.java | 8 ++++----
.../client5/testing/async/TestClassicOverAsyncHttp1.java | 2 +-
.../org/apache/hc/client5/testing/fluent/TestFluent.java | 2 +-
.../hc/client5/testing/sync/TestConnectionTimeouts.java | 5 +++--
.../hc/client5/testing/sync/TestContentCodings.java | 15 ++++++++-------
.../org/apache/hc/client5/testing/sync/TestRedirects.java | 2 +-
.../apache/hc/client5/testing/sync/TestSocketTimeout.java | 8 +++++---
.../http/impl/classic/BasicHttpClientResponseHandler.java | 4 ++++
.../hc/client5/http/entity/TestDecompressingEntity.java | 4 ++--
.../org/apache/hc/client5/http/entity/TestDeflate.java | 4 ++--
.../apache/hc/client5/http/entity/TestEntityBuilder.java | 2 +-
.../java/org/apache/hc/client5/http/entity/TestGZip.java | 8 ++++----
.../http/examples/ClientMultiThreadedExecution.java | 6 +-----
.../hc/client5/http/examples/ClientQueryMethod.java | 2 +-
.../client5/http/examples/ClientResponseProcessing.java | 2 +-
.../http/examples/ClientServerCompressionExample.java | 2 +-
.../classic/TestAbstractHttpClientResponseHandler.java | 3 +++
.../http/impl/classic/TestBasicResponseHandler.java | 3 +++
26 files changed, 57 insertions(+), 47 deletions(-)
diff --git a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCachingExecChain.java b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCachingExecChain.java
index a9265e5eb..603a4c325 100644
--- a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCachingExecChain.java
+++ b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCachingExecChain.java
@@ -1117,7 +1117,7 @@ public int read() throws IOException {
Assertions.assertThrows(SocketTimeoutException.class, () -> {
final ClassicHttpResponse result1 = execute(req1);
- EntityUtils.toString(result1.getEntity());
+ EntityUtils.toString(result1.getEntity(), 1000);
});
}
diff --git a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCombinedEntity.java b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCombinedEntity.java
index abb6aa50b..8a11c1856 100644
--- a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCombinedEntity.java
+++ b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCombinedEntity.java
@@ -54,7 +54,7 @@ void testCombinedEntityBasics() throws Exception {
Assertions.assertFalse(entity.isRepeatable());
Assertions.assertTrue(entity.isStreaming());
- Assertions.assertArrayEquals(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, EntityUtils.toByteArray(entity));
+ Assertions.assertArrayEquals(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, EntityUtils.toByteArray(entity, 1000));
verify(httpEntity).getContent();
diff --git a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/ContentResponseHandler.java b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/ContentResponseHandler.java
index 102c6454b..df1f84747 100644
--- a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/ContentResponseHandler.java
+++ b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/ContentResponseHandler.java
@@ -54,7 +54,7 @@ public class ContentResponseHandler extends AbstractHttpClientResponseHandler<Co
@Override
public Content handleEntity(final HttpEntity entity) throws IOException {
return entity != null ?
- new Content(EntityUtils.toByteArray(entity), ContentType.parse(entity.getContentType())) :
+ new Content(EntityUtils.toByteArray(entity, Integer.MAX_VALUE), ContentType.parse(entity.getContentType())) :
Content.NO_CONTENT;
}
@@ -76,6 +76,6 @@ public Content handleResponse(final ClassicHttpResponse response) throws IOExcep
if (statusCode >= 300) {
throw new HttpResponseException(statusCode, response.getReasonPhrase(), entity != null ? EntityUtils.toByteArray(entity, MAX_MESSAGE_LENGTH) : null, contentType);
}
- return new Content(entity != null ? EntityUtils.toByteArray(entity) : new byte[] {}, contentType);
+ return new Content(entity != null ? EntityUtils.toByteArray(entity, Integer.MAX_VALUE) : new byte[] {}, contentType);
}
}
diff --git a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Executor.java b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Executor.java
index a1adb84a9..c1bb154e5 100644
--- a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Executor.java
+++ b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Executor.java
@@ -111,7 +111,6 @@ static CloseableHttpClient GET_ASYNC_CLIENT() {
.build())
.build())
.evictExpiredConnections()
- .evictIdleConnections(TimeValue.ofMinutes(1))
.build(), Timeout.ofMinutes(5));
}
return ASYNC_CLIENT;
diff --git a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Response.java b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Response.java
index 85660aeac..2d40272f3 100644
--- a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Response.java
+++ b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Response.java
@@ -118,7 +118,7 @@ public HttpResponse returnResponse() throws IOException {
return ClassicResponseBuilder.copy(response)
.setEntity(entity != null ?
new ByteArrayEntity(
- EntityUtils.toByteArray(entity),
+ EntityUtils.toByteArray(entity, Integer.MAX_VALUE),
ContentType.parse(entity.getContentType()))
: null)
.build();
diff --git a/httpclient5-jakarta-rest-client/src/test/java/org/apache/hc/client5/http/rest/RestClientBuilderTest.java b/httpclient5-jakarta-rest-client/src/test/java/org/apache/hc/client5/http/rest/RestClientBuilderTest.java
index 39bd2b4a4..1db236e1b 100644
--- a/httpclient5-jakarta-rest-client/src/test/java/org/apache/hc/client5/http/rest/RestClientBuilderTest.java
+++ b/httpclient5-jakarta-rest-client/src/test/java/org/apache/hc/client5/http/rest/RestClientBuilderTest.java
@@ -383,7 +383,7 @@ static void setUp() throws Exception {
.register("/echobody",
(request, response, context) -> {
final byte[] body =
- EntityUtils.toByteArray(request.getEntity());
+ EntityUtils.toByteArray(request.getEntity(), 1000);
response.setCode(200);
response.setEntity(new ByteArrayEntity(body,
ContentType.APPLICATION_OCTET_STREAM));
@@ -409,7 +409,7 @@ static void setUp() throws Exception {
.register("/json",
(request, response, context) -> {
final String body =
- EntityUtils.toString(request.getEntity());
+ EntityUtils.toString(request.getEntity(), 1000);
response.setCode(201);
response.setEntity(new StringEntity(
body, ContentType.APPLICATION_JSON));
diff --git a/httpclient5-testing/src/main/java/org/apache/hc/client5/testing/classic/EchoHandler.java b/httpclient5-testing/src/main/java/org/apache/hc/client5/testing/classic/EchoHandler.java
index 596872509..03bd4fadc 100644
--- a/httpclient5-testing/src/main/java/org/apache/hc/client5/testing/classic/EchoHandler.java
+++ b/httpclient5-testing/src/main/java/org/apache/hc/client5/testing/classic/EchoHandler.java
@@ -83,7 +83,7 @@ public void handle(final ClassicHttpRequest request,
data = new byte [0];
contentType = null;
} else {
- data = EntityUtils.toByteArray(entity);
+ data = EntityUtils.toByteArray(entity, Integer.MAX_VALUE);
final String contentTypeStr = entity.getContentType();
contentType = contentTypeStr == null ? null : ContentType.parse(contentTypeStr);
}
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/TestValidateAfterInactivity.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/TestValidateAfterInactivity.java
index 1ec1d31b0..0c79b5af8 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/TestValidateAfterInactivity.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/TestValidateAfterInactivity.java
@@ -35,13 +35,13 @@
import org.apache.hc.client5.http.config.ConnectionConfig;
import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
-import org.apache.hc.client5.http.impl.classic.BasicHttpClientResponseHandler;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager;
import org.apache.hc.client5.testing.TestValidateAfterInactivity.TcpReset;
import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
@@ -184,7 +184,8 @@ private void sendPing(final CloseableHttpClient client) throws URISyntaxExceptio
final HttpHost target = new HttpHost("localhost", port);
final URI requestUri = new URI("/ping");
- final String response = client.execute(target, new HttpGet(requestUri), new BasicHttpClientResponseHandler());
+ final String response = client.execute(target, new HttpGet(requestUri), message ->
+ EntityUtils.toString(message.getEntity(), 1000));
assertEquals("OK", response);
}
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsync.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsync.java
index 08736af52..6d0657b73 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsync.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsync.java
@@ -135,7 +135,7 @@ void testSequentialGetRequests(final int contentSize) throws Exception {
.build(),
response -> {
Assertions.assertEquals(200, response.getCode());
- final byte[] bytes = EntityUtils.toByteArray(response.getEntity());
+ final byte[] bytes = EntityUtils.toByteArray(response.getEntity(), contentSize);
Assertions.assertNotNull(bytes);
Assertions.assertEquals(contentSize, bytes.length);
return null;
@@ -274,7 +274,7 @@ void testConcurrentGetRequests(final int contentSize) throws Exception {
return client.execute(
request,
response -> {
- final byte[] bytes = EntityUtils.toByteArray(response.getEntity());
+ final byte[] bytes = EntityUtils.toByteArray(response.getEntity(), contentSize);
countDownLatch.countDown();
return new Result<>(request, response, bytes);
});
@@ -318,7 +318,7 @@ void testSequentialPostRequests(final int contentSize) throws Exception {
.build(),
response -> {
Assertions.assertEquals(200, response.getCode());
- final byte[] bytes = EntityUtils.toByteArray(response.getEntity());
+ final byte[] bytes = EntityUtils.toByteArray(response.getEntity(), contentSize);
Assertions.assertNotNull(bytes);
Assertions.assertArrayEquals(temp, bytes);
return null;
@@ -353,7 +353,7 @@ void testConcurrentPostRequests(final int contentSize) throws Exception {
return client.execute(
request,
response -> {
- final byte[] bytes = EntityUtils.toByteArray(response.getEntity());
+ final byte[] bytes = EntityUtils.toByteArray(response.getEntity(), contentSize);
countDownLatch.countDown();
return new Result<>(request, response, bytes);
});
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsyncHttp1.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsyncHttp1.java
index 8f6ba5bf0..815b36ffb 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsyncHttp1.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestClassicOverAsyncHttp1.java
@@ -72,7 +72,7 @@ void testSequentialPostRequestsNoKeepAlive(final int contentSize) throws Excepti
.build(),
response -> {
Assertions.assertEquals(200, response.getCode());
- final byte[] bytes = EntityUtils.toByteArray(response.getEntity());
+ final byte[] bytes = EntityUtils.toByteArray(response.getEntity(), contentSize);
Assertions.assertNotNull(bytes);
Assertions.assertArrayEquals(temp, bytes);
return null;
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/fluent/TestFluent.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/fluent/TestFluent.java
index 2c0f366f2..2bb1a44e6 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/fluent/TestFluent.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/fluent/TestFluent.java
@@ -71,7 +71,7 @@ void setUp() {
final ContentType contentType = contentTypeStr == null ? ContentType.DEFAULT_TEXT : ContentType.parse(contentTypeStr);
if (ContentType.TEXT_PLAIN.getMimeType().equals(contentType.getMimeType())) {
responseEntity = new StringEntity(
- EntityUtils.toString(requestEntity), ContentType.TEXT_PLAIN);
+ EntityUtils.toString(requestEntity, 1000), ContentType.TEXT_PLAIN);
}
}
if (responseEntity == null) {
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestConnectionTimeouts.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestConnectionTimeouts.java
index cfe9bef19..34d4fdd85 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestConnectionTimeouts.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestConnectionTimeouts.java
@@ -32,11 +32,11 @@
import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase;
import org.apache.hc.client5.http.config.ConnectionConfig;
import org.apache.hc.client5.http.config.RequestConfig;
-import org.apache.hc.client5.http.impl.classic.BasicHttpClientResponseHandler;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.params.ParameterizedTest;
@@ -84,7 +84,8 @@ private static HttpUriRequestBase getRequest(final String scheme) {
private static void assertTimeout(final HttpUriRequestBase request, final CloseableHttpClient client) {
final ConnectTimeoutException ex = assertThrows(ConnectTimeoutException.class,
- () -> client.execute(request, new BasicHttpClientResponseHandler()));
+ () -> client.execute(request, response ->
+ EntityUtils.toString(response.getEntity(), 1000)));
// Capitalization (`connect` vs `Connect`) varies by Java version
assertTrue(ex.getMessage().toLowerCase().contains("connect timed out"), ex.getMessage());
}
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestContentCodings.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestContentCodings.java
index 6cc1791d3..61eedcbba 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestContentCodings.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestContentCodings.java
@@ -41,7 +41,6 @@
import java.util.zip.GZIPOutputStream;
import org.apache.hc.client5.http.classic.methods.HttpGet;
-import org.apache.hc.client5.http.impl.classic.BasicHttpClientResponseHandler;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.testing.extension.sync.ClientProtocolLevel;
@@ -116,7 +115,7 @@ void testDeflateSupportForServerReturningRfc1950Stream() throws Exception {
final HttpGet request = new HttpGet("/some-resource");
client.execute(target, request, response -> {
- Assertions.assertEquals(entityText, EntityUtils.toString(response.getEntity()),
+ Assertions.assertEquals(entityText, EntityUtils.toString(response.getEntity(), 1000),
"The entity text is correctly transported");
return null;
});
@@ -141,7 +140,7 @@ void testDeflateSupportForServerReturningRfc1951Stream() throws Exception {
final HttpGet request = new HttpGet("/some-resource");
client.execute(target, request, response -> {
- Assertions.assertEquals(entityText, EntityUtils.toString(response.getEntity()),
+ Assertions.assertEquals(entityText, EntityUtils.toString(response.getEntity(), 1000),
"The entity text is correctly transported");
return null;
});
@@ -165,7 +164,7 @@ void testGzipSupport() throws Exception {
final HttpGet request = new HttpGet("/some-resource");
client.execute(target, request, response -> {
- Assertions.assertEquals(entityText, EntityUtils.toString(response.getEntity()),
+ Assertions.assertEquals(entityText, EntityUtils.toString(response.getEntity(), 1000),
"The entity text is correctly transported");
return null;
});
@@ -280,7 +279,8 @@ void gzipResponsesWorkWithBasicResponseHandler() throws Exception {
final TestClient client = client();
final HttpGet request = new HttpGet("/some-resource");
- final String response = client.execute(target, request, new BasicHttpClientResponseHandler());
+ final String response = client.execute(target, request, message ->
+ EntityUtils.toString(message.getEntity(), 1000));
Assertions.assertEquals(entityText, response, "The entity text is correctly transported");
}
@@ -296,7 +296,8 @@ void deflateResponsesWorkWithBasicResponseHandler() throws Exception {
final TestClient client = client();
final HttpGet request = new HttpGet("/some-resource");
- final String response = client.execute(target, request, new BasicHttpClientResponseHandler());
+ final String response = client.execute(target, request, message ->
+ EntityUtils.toString(message.getEntity(), 1000));
Assertions.assertEquals(entityText, response, "The entity text is correctly transported");
}
@@ -441,7 +442,7 @@ public void run() {
startGate.await();
try {
text = client.execute(target, request, response ->
- EntityUtils.toString(response.getEntity()));
+ EntityUtils.toString(response.getEntity(), 1000));
} catch (final Exception e) {
failed = true;
} finally {
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestRedirects.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestRedirects.java
index e99a0a0f3..8649e9e8e 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestRedirects.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestRedirects.java
@@ -861,7 +861,7 @@ void testQueryRedirectTemporary() throws Exception {
client.execute(target, httpQuery, context, response -> {
Assertions.assertEquals(HttpStatus.SC_OK, response.getCode());
- Assertions.assertEquals("stuff", EntityUtils.toString(response.getEntity()));
+ Assertions.assertEquals("stuff", EntityUtils.toString(response.getEntity(), 1000));
return null;
});
final HttpRequest reqWrapper = context.getRequest();
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestSocketTimeout.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestSocketTimeout.java
index bb8caa2aa..d5dc69cc6 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestSocketTimeout.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestSocketTimeout.java
@@ -30,7 +30,6 @@
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.config.ConnectionConfig;
import org.apache.hc.client5.http.config.RequestConfig;
-import org.apache.hc.client5.http.impl.classic.BasicHttpClientResponseHandler;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.testing.classic.RandomHandler;
import org.apache.hc.client5.testing.extension.sync.ClientProtocolLevel;
@@ -38,6 +37,7 @@
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.core5.http.URIScheme;
import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Timeout;
import org.junit.jupiter.params.ParameterizedTest;
@@ -87,12 +87,14 @@ void testReadTimeouts(final int socketConfigTimeout, final int connConfigTimeout
for (final boolean drip : new boolean[]{ false, true }) {
for (final boolean reuseConnection : new boolean[]{ false, true }) {
if (reuseConnection) {
- client.execute(target, getRequest(5000, 0, false), new BasicHttpClientResponseHandler());
+ client.execute(target, getRequest(5000, 0, false), response ->
+ EntityUtils.toString(response.getEntity(), 1000));
}
final HttpGet request = getRequest(responseTimeout, 2500, drip);
assertThrows(SocketTimeoutException.class, () ->
- client.execute(target, request, new BasicHttpClientResponseHandler()),
+ client.execute(target, request, response ->
+ EntityUtils.toString(response.getEntity(), 1000)),
String.format("drip=%s, reuseConnection=%s", drip, reuseConnection));
}
}
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/BasicHttpClientResponseHandler.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/BasicHttpClientResponseHandler.java
index 6269c0758..9736c302e 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/BasicHttpClientResponseHandler.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/BasicHttpClientResponseHandler.java
@@ -50,8 +50,12 @@
* HttpClient may handle redirects (3xx responses) internally.
* </p>
*
+ * @deprecated Use a custom {@link org.apache.hc.core5.http.io.HttpClientResponseHandler}
+ * that represents response content as a value object.
+ *
* @since 4.0
*/
+@Deprecated
@Contract(threading = ThreadingBehavior.STATELESS)
public class BasicHttpClientResponseHandler extends AbstractHttpClientResponseHandler<String> {
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDecompressingEntity.java b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDecompressingEntity.java
index a24e050e6..b6ee4e3a6 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDecompressingEntity.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDecompressingEntity.java
@@ -53,7 +53,7 @@ void testNonStreaming() throws Exception {
final StringEntity wrapped = new StringEntity("1234567890", StandardCharsets.US_ASCII);
final ChecksumEntity entity = new ChecksumEntity(wrapped, crc32);
Assertions.assertFalse(entity.isStreaming());
- final String s = EntityUtils.toString(entity);
+ final String s = EntityUtils.toString(entity, 1000);
Assertions.assertEquals("1234567890", s);
Assertions.assertEquals(639479525L, crc32.getValue());
final InputStream in1 = entity.getContent();
@@ -68,7 +68,7 @@ void testStreaming() throws Exception {
final InputStreamEntity wrapped = new InputStreamEntity(in, -1, ContentType.DEFAULT_TEXT);
final ChecksumEntity entity = new ChecksumEntity(wrapped, crc32);
Assertions.assertTrue(entity.isStreaming());
- final String s = EntityUtils.toString(entity);
+ final String s = EntityUtils.toString(entity, 1000);
Assertions.assertEquals("1234567890", s);
Assertions.assertEquals(639479525L, crc32.getValue());
final InputStream in1 = entity.getContent();
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDeflate.java b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDeflate.java
index 2e40a1b73..f5f43ef1b 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDeflate.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestDeflate.java
@@ -61,7 +61,7 @@ void testCompressDecompress() throws Exception {
.decoder(ContentCoding.DEFLATE)
.apply(new ByteArrayEntity(compressed, 0, len, ContentType.APPLICATION_OCTET_STREAM));
- Assertions.assertEquals(s, EntityUtils.toString(entity));
+ Assertions.assertEquals(s, EntityUtils.toString(entity, 1000));
}
@Test
@@ -82,7 +82,7 @@ void testEncodeThenDecode() throws Exception {
.decoder(ContentCoding.DEFLATE)
.apply(new ByteArrayEntity(buf.toByteArray(), ContentType.APPLICATION_OCTET_STREAM));
- Assertions.assertEquals(text, EntityUtils.toString(decoded, StandardCharsets.US_ASCII));
+ Assertions.assertEquals(text, EntityUtils.toString(decoded, StandardCharsets.US_ASCII, 1000));
}
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestEntityBuilder.java b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestEntityBuilder.java
index 8292251ac..e69b0b251 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestEntityBuilder.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestEntityBuilder.java
@@ -105,7 +105,7 @@ void testExplicitContentProperties() throws Exception {
Assertions.assertEquals("application/json; charset=UTF-8", entity.getContentType());
Assertions.assertNotNull(entity.getContentEncoding());
Assertions.assertEquals("identity", entity.getContentEncoding());
- Assertions.assertEquals("{\"stuff\"}", EntityUtils.toString(entity));
+ Assertions.assertEquals("{\"stuff\"}", EntityUtils.toString(entity, 1000));
}
@Test
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestGZip.java b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestGZip.java
index 95d3aac7b..2938af503 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestGZip.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/entity/TestGZip.java
@@ -72,7 +72,7 @@ void testCompressionDecompression() throws Exception {
.decoder(ContentCoding.GZIP)
.apply(out);
Assertions.assertEquals("some kind of text",
- EntityUtils.toString(gunzipe, StandardCharsets.US_ASCII));
+ EntityUtils.toString(gunzipe, StandardCharsets.US_ASCII, 1000));
}
}
@@ -110,7 +110,7 @@ void testDecompressionWithMultipleGZipStream() throws Exception {
.apply(new InputStreamEntity(new ByteArrayInputStream(bytes),
ContentType.APPLICATION_OCTET_STREAM))) {
Assertions.assertEquals("stream-1\nstream-2\n",
- EntityUtils.toString(entity, StandardCharsets.US_ASCII));
+ EntityUtils.toString(entity, StandardCharsets.US_ASCII, 1000));
}
}
@@ -133,7 +133,7 @@ void testEncodeThenDecode() throws Exception {
.apply(new ByteArrayEntity(buf.toByteArray(),
ContentType.APPLICATION_OCTET_STREAM));
- Assertions.assertEquals(txt, EntityUtils.toString(ungzip, StandardCharsets.US_ASCII));
+ Assertions.assertEquals(txt, EntityUtils.toString(ungzip, StandardCharsets.US_ASCII, 1000));
}
@Test
@@ -151,7 +151,7 @@ void testUnwrapHelper() throws Exception {
Assertions.assertNotNull(decodedEntity, "unwrap returned null");
Assertions.assertEquals("unwrap check",
- EntityUtils.toString(decodedEntity, StandardCharsets.US_ASCII));
+ EntityUtils.toString(decodedEntity, StandardCharsets.US_ASCII, 1000));
}
}
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientMultiThreadedExecution.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientMultiThreadedExecution.java
index 411f7d959..f89144e91 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientMultiThreadedExecution.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientMultiThreadedExecution.java
@@ -30,10 +30,8 @@
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
-import org.apache.hc.client5.http.protocol.HttpClientContext;
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.io.entity.EntityUtils;
-import org.apache.hc.core5.http.protocol.HttpContext;
/**
* An example that performs GETs from multiple threads.
@@ -84,13 +82,11 @@ public static void main(final String[] args) throws Exception {
static class GetThread extends Thread {
private final CloseableHttpClient httpClient;
- private final HttpContext context;
private final HttpGet httpget;
private final int id;
public GetThread(final CloseableHttpClient httpClient, final HttpGet httpget, final int id) {
this.httpClient = httpClient;
- this.context = HttpClientContext.create();
this.httpget = httpget;
this.id = id;
}
@@ -107,7 +103,7 @@ public void run() {
// get the response body as an array of bytes
final HttpEntity entity = response.getEntity();
if (entity != null) {
- final byte[] bytes = EntityUtils.toByteArray(entity);
+ final byte[] bytes = EntityUtils.toByteArray(entity, Integer.MAX_VALUE);
System.out.println(id + " - " + bytes.length + " bytes read");
}
return null;
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientQueryMethod.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientQueryMethod.java
index 7cbda480a..c502792fd 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientQueryMethod.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientQueryMethod.java
@@ -49,7 +49,7 @@ public static void main(final String[] args) throws Exception {
httpclient.execute(httpQuery, response -> {
System.out.println("----------------------------------------");
System.out.println(httpQuery + "->" + new StatusLine(response));
- System.out.println(EntityUtils.toString(response.getEntity()));
+ System.out.println(EntityUtils.toString(response.getEntity(), 1000));
return null;
});
}
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientResponseProcessing.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientResponseProcessing.java
index ad7c45542..8f93dabaf 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientResponseProcessing.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientResponseProcessing.java
@@ -49,7 +49,7 @@ public static void main(final String[] args) throws Exception {
System.out.println("----------------------------------------");
System.out.println(httpget + "->" + new StatusLine(response));
// Process response message and convert it into a value object
- return new Result(response.getCode(), EntityUtils.toString(response.getEntity()));
+ return new Result(response.getCode(), EntityUtils.toString(response.getEntity(), 1000));
});
System.out.println(result);
}
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientServerCompressionExample.java b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientServerCompressionExample.java
index 76a579bb8..e11f3f539 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientServerCompressionExample.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientServerCompressionExample.java
@@ -111,7 +111,7 @@ public static void main(final String[] args) throws Exception {
final String reply = client.execute(
post,
- rsp -> EntityUtils.toString(rsp.getEntity(), StandardCharsets.UTF_8));
+ rsp -> EntityUtils.toString(rsp.getEntity(), StandardCharsets.UTF_8, 1000));
System.out.println("Response: " + reply);
} finally {
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestAbstractHttpClientResponseHandler.java b/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestAbstractHttpClientResponseHandler.java
index 8351bc7ae..0cc0971cc 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestAbstractHttpClientResponseHandler.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestAbstractHttpClientResponseHandler.java
@@ -41,7 +41,10 @@
/**
* Unit tests for {@link BasicHttpClientResponseHandler}.
+ *
+ * @deprecated Should no longer be used.
*/
+@Deprecated
class TestAbstractHttpClientResponseHandler {
@Test
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestBasicResponseHandler.java b/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestBasicResponseHandler.java
index e995b8655..cc48f2416 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestBasicResponseHandler.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestBasicResponseHandler.java
@@ -39,8 +39,11 @@
/**
* Unit tests for {@link BasicHttpClientResponseHandler}.
+ *
+ * @deprecated Should no longer be used.
*/
@SuppressWarnings("boxing") // test code
+@Deprecated
class TestBasicResponseHandler {
@Test