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 a5319e271ee..87568915770 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 e04daaa449d..58de7cfee18 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 10a649ae2e4..70b456cadfd 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)) {