Revert "Do not set 0 Content-Length header in BufferingClientHttpRequestFactory"
This reverts commit b3a45670f9.
See gh-32650
This commit is contained in:
parent
25cedcfb99
commit
64b0283042
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -42,7 +42,7 @@ abstract class AbstractBufferingClientHttpRequest extends AbstractClientHttpRequ
|
|||
@Override
|
||||
protected ClientHttpResponse executeInternal(HttpHeaders headers) throws IOException {
|
||||
byte[] bytes = this.bufferedOutput.toByteArrayUnsafe();
|
||||
if (bytes.length > 0 && headers.getContentLength() < 0) {
|
||||
if (headers.getContentLength() < 0) {
|
||||
headers.setContentLength(bytes.length);
|
||||
}
|
||||
ClientHttpResponse result = executeInternal(headers, bytes);
|
||||
|
|
|
|||
|
|
@ -106,10 +106,6 @@ public abstract class AbstractMockWebServerTests {
|
|||
assertThat(request.getMethod()).isEqualTo(expectedMethod);
|
||||
return new MockResponse();
|
||||
}
|
||||
else if(request.getPath().startsWith("/header/")) {
|
||||
String headerName = request.getPath().replace("/header/","");
|
||||
return new MockResponse().setBody(headerName + ":" + request.getHeader(headerName)).setResponseCode(200);
|
||||
}
|
||||
return new MockResponse().setResponseCode(404);
|
||||
}
|
||||
catch (Throwable exc) {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
package org.springframework.http.client;
|
||||
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
|
|
@ -50,7 +49,12 @@ class BufferingClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryT
|
|||
FileCopyUtils.copy(body, request.getBody());
|
||||
try (ClientHttpResponse response = request.execute()) {
|
||||
assertThat(response.getStatusCode()).as("Invalid status code").isEqualTo(HttpStatus.OK);
|
||||
assertThat(response.getStatusCode()).as("Invalid status code").isEqualTo(HttpStatus.OK);
|
||||
|
||||
assertThat(response.getHeaders().containsKey(headerName)).as("Header not found").isTrue();
|
||||
assertThat(response.getHeaders().containsKey(headerName)).as("Header not found").isTrue();
|
||||
|
||||
assertThat(response.getHeaders().get(headerName)).as("Header value not found").isEqualTo(Arrays.asList(headerValue1, headerValue2));
|
||||
assertThat(response.getHeaders().get(headerName)).as("Header value not found").isEqualTo(Arrays.asList(headerValue1, headerValue2));
|
||||
|
||||
byte[] result = FileCopyUtils.copyToByteArray(response.getBody());
|
||||
|
|
@ -60,14 +64,4 @@ class BufferingClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryT
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotSetContentLengthWhenEmptyBody() throws Exception {
|
||||
ClientHttpRequest request = factory.createRequest(URI.create(baseUrl + "/header/Content-Length"), HttpMethod.POST);
|
||||
try (ClientHttpResponse response = request.execute()) {
|
||||
assertThat(response.getStatusCode()).as("Invalid status code").isEqualTo(HttpStatus.OK);
|
||||
String result = FileCopyUtils.copyToString(new InputStreamReader(response.getBody()));
|
||||
assertThat(result).as("Invalid body").isEqualTo("Content-Length:null");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue