diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java index 4639a1a9..bddc6950 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java @@ -178,7 +178,7 @@ private void writeMultipartEnd(PrintWriter writer) { private boolean requiresFormEncodingContentTypeHeader(OperationRequest request) { return request.getHeaders().get(HttpHeaders.CONTENT_TYPE) == null && isPutPostOrPatch(request) - && !includeParametersInUri(request); + && request.getContent().length > 0 && !includeParametersInUri(request); } private Map header(String name, String value) { diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java index 203084d3..45a2f4bd 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java @@ -101,6 +101,14 @@ void postRequestWithContent(OperationBuilder operationBuilder, AssertableSnippet .header(HttpHeaders.CONTENT_LENGTH, content.getBytes().length)); } + @RenderedSnippetTest + void postRequestWithoutContentDoesNotInferContentType(OperationBuilder operationBuilder, + AssertableSnippets snippets) throws IOException { + new HttpRequestSnippet().document(operationBuilder.request("http://localhost/foo").method("POST").build()); + assertThat(snippets.httpRequest()) + .isHttpRequest((request) -> request.post("/foo").header(HttpHeaders.HOST, "localhost")); + } + @RenderedSnippetTest void postRequestWithContentAndQueryParameters(OperationBuilder operationBuilder, AssertableSnippets snippets) throws IOException {