RFR: 8283544: HttpClient GET method adds Content-Length: 0 header
Daniel Jeliński
djelinski at openjdk.java.net
Tue Mar 29 18:34:45 UTC 2022
On Tue, 29 Mar 2022 15:44:58 GMT, Conor Cleary <ccleary at 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
More information about the net-dev
mailing list