diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/ApiClient.mustache
index a5319e271ee246c92419d1d5555f7bef3a771082..875689157705da32ae22bfc3f753fb88953c56f4 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/ApiClient.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/ApiClient.mustache
@@ -830,7 +830,15 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
     String mimeType = getResponseMimeType(response);
     if (mimeType == null || isJsonMime(mimeType)) {
       // Assume json if no mime type
-      return objectMapper.readValue(entity.getContent(), valueType);
+      // convert input stream to string
+      java.util.Scanner s = new java.util.Scanner(entity.getContent()).useDelimiter("\\A");
+      String content = (String) (s.hasNext() ? s.next() : "");
+
+      if ("".equals(content)) { // returns null for empty body
+        return null;
+      }
+
+      return objectMapper.readValue(content, valueType);
     } else if ("text/plain".equalsIgnoreCase(mimeType)) {
       // convert input stream to string
       java.util.Scanner s = new java.util.Scanner(entity.getContent()).useDelimiter("\\A");
@@ -1069,7 +1077,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
       }
     } else {
       // for empty body
-      builder.setEntity(serialize(null, null, contentTypeObj));
+      builder.setEntity(new StringEntity("", contentTypeObj));
     }
 
     try (CloseableHttpResponse response = httpClient.execute(builder.build(), context)) {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
index e04daaa449d19115f1026b3b2ddc35c64e27a4ae..58de7cfee181ce6a4a08428ce4e850fc4d14716a 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
@@ -703,7 +703,15 @@ public class ApiClient extends JavaTimeFormatter {
     String mimeType = getResponseMimeType(response);
     if (mimeType == null || isJsonMime(mimeType)) {
       // Assume json if no mime type
-      return objectMapper.readValue(entity.getContent(), valueType);
+      // convert input stream to string
+      java.util.Scanner s = new java.util.Scanner(entity.getContent()).useDelimiter("\\A");
+      String content = (String) (s.hasNext() ? s.next() : "");
+
+      if ("".equals(content)) { // returns null for empty body
+        return null;
+      }
+
+      return objectMapper.readValue(content, valueType);
     } else if ("text/plain".equalsIgnoreCase(mimeType)) {
       // convert input stream to string
       java.util.Scanner s = new java.util.Scanner(entity.getContent()).useDelimiter("\\A");
@@ -942,7 +950,7 @@ public class ApiClient extends JavaTimeFormatter {
       }
     } else {
       // for empty body
-      builder.setEntity(serialize(null, null, contentTypeObj));
+      builder.setEntity(new StringEntity("", contentTypeObj));
     }
 
     try (CloseableHttpResponse response = httpClient.execute(builder.build(), context)) {
diff --git a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
index 10a649ae2e4ea13fe5ecf883581bb81b701a783b..70b456cadfd5062cc37e9022651ef0cc925bbce7 100644
--- a/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
+++ b/samples/client/petstore/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
@@ -846,7 +846,15 @@ public class ApiClient extends JavaTimeFormatter {
     String mimeType = getResponseMimeType(response);
     if (mimeType == null || isJsonMime(mimeType)) {
       // Assume json if no mime type
-      return objectMapper.readValue(entity.getContent(), valueType);
+      // convert input stream to string
+      java.util.Scanner s = new java.util.Scanner(entity.getContent()).useDelimiter("\\A");
+      String content = (String) (s.hasNext() ? s.next() : "");
+
+      if ("".equals(content)) { // returns null for empty body
+        return null;
+      }
+
+      return objectMapper.readValue(content, valueType);
     } else if ("text/plain".equalsIgnoreCase(mimeType)) {
       // convert input stream to string
       java.util.Scanner s = new java.util.Scanner(entity.getContent()).useDelimiter("\\A");
@@ -1085,7 +1093,7 @@ public class ApiClient extends JavaTimeFormatter {
       }
     } else {
       // for empty body
-      builder.setEntity(serialize(null, null, contentTypeObj));
+      builder.setEntity(new StringEntity("", contentTypeObj));
     }
 
     try (CloseableHttpResponse response = httpClient.execute(builder.build(), context)) {