On Tue, 29 Mar 2022 15:44:58 GMT, Conor Cleary <ccle...@openjdk.org> wrote:

> **Issue**
> When using the `HttpClient.send()` to send a GET request created using the 
> `HttpRequest.newBuilder()`, a `Content-length: 0` header is set. This 
> behaviour causes issues with many services as a body related header is 
> usually not expected to be included with a GET request. 
> 
> **Solution**
> `Http1Request.java` was modified so that when the request method is a GET, a 
> `Content-length` header is not added to the request. However, if a developer 
> chooses to include a body in a GET request (though it is generally considered 
> bad practice), a `Content-length` header with the appropriate value will be 
> added.

Changes requested by djelinski (Committer).

src/java.net.http/share/classes/jdk/internal/net/http/Http1Request.java line 
302:

> 300: 
> 301:         // GET with no body should not set the Content-Length header
> 302:         if (requestPublisher != null || !"GET".equals(request.method())) 
> {

Can we remove the check for "GET"? This way we will let the users decide if 
they want to send content-length or not, regardless of the chosen request 
method.

src/java.net.http/share/classes/jdk/internal/net/http/Http1Request.java line 
305:

> 303:             if (contentLength == 0) {
> 304:                 systemHeadersBuilder.setHeader("Content-Length", "0");
> 305:                 System.err.println("in 1");

did you forget to remove this?

-------------

PR: https://git.openjdk.java.net/jdk/pull/8017

Reply via email to