On Tue, 29 Mar 2022 15:44:58 GMT, Conor Cleary <[email protected]> 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