diff --git a/spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java b/spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java index a3ec76997b..a7830bff26 100644 --- a/spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java +++ b/spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java @@ -151,7 +151,7 @@ public class DefaultServerWebExchange implements ServerWebExchange { return EMPTY_FORM_DATA; } - HttpMessageReader> reader = getReader(configurer, contentType, FORM_DATA_TYPE); + HttpMessageReader> reader = getReader(configurer, MediaType.APPLICATION_FORM_URLENCODED, FORM_DATA_TYPE); if (reader == null) { return Mono.error(new IllegalStateException("No HttpMessageReader for " + contentType)); } diff --git a/spring-web/src/test/java/org/springframework/web/server/adapter/DefaultServerWebExchangeTests.java b/spring-web/src/test/java/org/springframework/web/server/adapter/DefaultServerWebExchangeTests.java index 2c5f4d332b..077d22df62 100644 --- a/spring-web/src/test/java/org/springframework/web/server/adapter/DefaultServerWebExchangeTests.java +++ b/spring-web/src/test/java/org/springframework/web/server/adapter/DefaultServerWebExchangeTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,10 @@ package org.springframework.web.server.adapter; import org.junit.jupiter.api.Test; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.http.codec.ServerCodecConfigurer; +import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.i18n.AcceptHeaderLocaleContextResolver; import org.springframework.web.server.session.DefaultWebSessionManager; @@ -56,6 +59,17 @@ class DefaultServerWebExchangeTests { assertThat(exchange.transformUrl("/foo")).isEqualTo("/foo;p=abc?q=123"); } + @Test // gh-34660 + void useFormDataMessageReaderWhenAllContentType() { + MockServerHttpRequest request = MockServerHttpRequest + .post("https://example.com") + .header(HttpHeaders.CONTENT_TYPE, MediaType.ALL_VALUE) + .body("project=spring"); + ServerWebExchange exchange = createExchange(request); + MultiValueMap body = exchange.getFormData().block(); + assertThat(body.get("project")).contains("spring"); + } + private DefaultServerWebExchange createExchange() { MockServerHttpRequest request = MockServerHttpRequest.get("https://example.com").build();