Skip reconstructing body from request params if query present

This allows restoring optimization in StringHttpMessageConverter
that was undone in 23162b for 6.0.x.

Closes gh-31327
This commit is contained in:
rstoyanchev
2023-09-29 17:59:02 +01:00
parent a6ab636614
commit 8fa428f825
3 changed files with 23 additions and 7 deletions

View File

@@ -93,7 +93,11 @@ public class StringHttpMessageConverter extends AbstractHttpMessageConverter<Str
@Override
protected String readInternal(Class<? extends String> clazz, HttpInputMessage inputMessage) throws IOException {
Charset charset = getContentTypeCharset(inputMessage.getHeaders().getContentType());
return StreamUtils.copyToString(inputMessage.getBody(), charset);
long length = inputMessage.getHeaders().getContentLength();
byte[] bytes = (length >= 0 && length <= Integer.MAX_VALUE ?
inputMessage.getBody().readNBytes((int) length) :
inputMessage.getBody().readAllBytes());
return new String(bytes, charset);
}
@Override

View File

@@ -209,7 +209,7 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
@Override
public InputStream getBody() throws IOException {
if (isFormPost(this.servletRequest)) {
if (isFormPost(this.servletRequest) && this.servletRequest.getQueryString() == null) {
return getBodyFromServletRequestParameters(this.servletRequest);
}
else {