diff --git a/.changes/next-release/feature-URLConnectionHttpClient-a1e8182.json b/.changes/next-release/feature-URLConnectionHttpClient-a1e8182.json new file mode 100644 index 000000000000..3f400a5ba9ea --- /dev/null +++ b/.changes/next-release/feature-URLConnectionHttpClient-a1e8182.json @@ -0,0 +1,6 @@ +{ + "category": "URL Connection Http Client", + "contributor": "rtyley", + "type": "feature", + "description": "Lower memory consumption for HTTP requests by enabling fixed-length streaming mode." +} diff --git a/http-clients/url-connection-client/src/main/java/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.java b/http-clients/url-connection-client/src/main/java/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.java index ae419a7bfef2..900a858b3caa 100644 --- a/http-clients/url-connection-client/src/main/java/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.java +++ b/http-clients/url-connection-client/src/main/java/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.java @@ -15,6 +15,7 @@ package software.amazon.awssdk.http.urlconnection; +import static software.amazon.awssdk.http.Header.CONTENT_LENGTH; import static software.amazon.awssdk.http.HttpStatusFamily.CLIENT_ERROR; import static software.amazon.awssdk.http.HttpStatusFamily.SERVER_ERROR; import static software.amazon.awssdk.utils.FunctionalUtils.invokeSafely; @@ -140,6 +141,9 @@ private HttpURLConnection createAndConfigureConnection(HttpExecuteRequest reques // See: https://github.com/aws/aws-sdk-java-v2/issues/975 connection.setInstanceFollowRedirects(false); + request.httpRequest().firstMatchingHeader(CONTENT_LENGTH).map(Long::parseLong) + .ifPresent(connection::setFixedLengthStreamingMode); + return connection; }