From 30da235dbdc3d2617861e8b05224a37de1b059d9 Mon Sep 17 00:00:00 2001 From: iroqueta Date: Tue, 10 Dec 2024 19:30:10 -0300 Subject: [PATCH] Content-Length header should not be set to the GET verb. Calling the execute HttpClient method with GET without a body incorrectly sends the Content-Length header. Issue: 202823 --- .../genexus/internet/HttpClientJavaLib.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java b/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java index 608ed9285..e26c9dade 100644 --- a/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java +++ b/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java @@ -486,16 +486,26 @@ public void execute(String method, String url) { try (CloseableHttpClient httpClient = this.httpClientBuilder.build()) { if (method.equalsIgnoreCase("GET")) { - HttpGetWithBody httpget = new HttpGetWithBody(url.trim()); - httpget.setConfig(reqConfig); - Set keys = getheadersToSend().keySet(); - for (String header : keys) { - httpget.addHeader(header, getheadersToSend().get(header)); + byte[] data = getData(); + if (data.length > 0) { + HttpGetWithBody httpGetWithBody = new HttpGetWithBody(url.trim()); + httpGetWithBody.setConfig(reqConfig); + Set keys = getheadersToSend().keySet(); + for (String header : keys) { + httpGetWithBody.addHeader(header, getheadersToSend().get(header)); + } + httpGetWithBody.setEntity(new ByteArrayEntity(data)); + response = httpClient.execute(httpGetWithBody, httpClientContext); + } + else { + HttpGet httpget = new HttpGet(url.trim()); + httpget.setConfig(reqConfig); + Set keys = getheadersToSend().keySet(); + for (String header : keys) { + httpget.addHeader(header, getheadersToSend().get(header)); + } + response = httpClient.execute(httpget, httpClientContext); } - - httpget.setEntity(new ByteArrayEntity(getData())); - - response = httpClient.execute(httpget, httpClientContext); } else if (method.equalsIgnoreCase("POST")) { HttpPost httpPost = new HttpPost(url.trim());