diff --git a/http-client-spi/src/main/java/software/amazon/awssdk/http/DefaultSdkHttpFullRequest.java b/http-client-spi/src/main/java/software/amazon/awssdk/http/DefaultSdkHttpFullRequest.java index fe90792399ee..1de1f71191b9 100644 --- a/http-client-spi/src/main/java/software/amazon/awssdk/http/DefaultSdkHttpFullRequest.java +++ b/http-client-spi/src/main/java/software/amazon/awssdk/http/DefaultSdkHttpFullRequest.java @@ -56,7 +56,7 @@ private DefaultSdkHttpFullRequest(Builder builder) { this.queryParameters = deepUnmodifiableMap(builder.queryParameters, () -> new LinkedHashMap<>()); this.httpMethod = Validate.paramNotNull(builder.httpMethod, "method"); this.headers = deepUnmodifiableMap(builder.headers, () -> new TreeMap<>(String.CASE_INSENSITIVE_ORDER)); - this.contentStreamProvider = builder.contentStreamProvider; + this.contentStreamProvider = standardizeBody(builder.contentStreamProvider); } private String standardizeProtocol(String protocol) { @@ -97,6 +97,14 @@ private Integer standardizePort(Integer port) { return port; } + private ContentStreamProvider standardizeBody(ContentStreamProvider contentStreamProvider) { + if (httpMethod.equals(SdkHttpMethod.GET)) { + return null; + } + + return contentStreamProvider; + } + @Override public String protocol() { return protocol; diff --git a/http-client-spi/src/test/java/software/amazon/awssdk/http/SdkHttpRequestResponseTest.java b/http-client-spi/src/test/java/software/amazon/awssdk/http/SdkHttpRequestResponseTest.java index b85021cbd004..74b42cb272cf 100644 --- a/http-client-spi/src/test/java/software/amazon/awssdk/http/SdkHttpRequestResponseTest.java +++ b/http-client-spi/src/test/java/software/amazon/awssdk/http/SdkHttpRequestResponseTest.java @@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import java.io.ByteArrayInputStream; import java.util.AbstractMap; import java.util.Arrays; import java.util.Collections; @@ -34,6 +35,16 @@ * interfaces. */ public class SdkHttpRequestResponseTest { + + @Test + public void contentStreamProviderNullOnGets() { + assertThat(validRequestBuilder().contentStreamProvider(() -> new ByteArrayInputStream("test".getBytes())) + .method(SdkHttpMethod.GET) + .build() + .contentStreamProvider()) + .isNotPresent(); + } + @Test public void optionalValuesAreOptional() { assertThat(validRequest().contentStreamProvider()).isNotPresent();