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 8a62f648..488b71bc 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 @@ -175,7 +175,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 a3ff9386..5f4a190a 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 @@ -138,6 +138,13 @@ public void postRequestWithCharset() throws IOException { .content(japaneseContent)); } + @Test + public void postRequestWithNoContentTypeAndNoBodyDoesNotIncludeContentTypeHeader() throws IOException { + new HttpRequestSnippet().document(this.operationBuilder.request("http://localhost/foo").method("POST").build()); + assertThat(this.generatedSnippets.httpRequest()) + .is(httpRequest(RequestMethod.POST, "/foo").header(HttpHeaders.HOST, "localhost")); + } + @Test public void putRequestWithContent() throws IOException { String content = "Hello, world";