Always specify charset for form data requests

Issue: SPR-16613
This commit is contained in:
Rossen Stoyanchev
2018-03-27 20:02:28 -04:00
parent 71126faae0
commit 1897d8e858
3 changed files with 18 additions and 22 deletions

View File

@@ -93,6 +93,9 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
private static final MediaType DEFAULT_FORM_DATA_MEDIA_TYPE =
new MediaType(MediaType.APPLICATION_FORM_URLENCODED, DEFAULT_CHARSET);
private List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
@@ -279,15 +282,14 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
private void writeForm(MultiValueMap<String, String> form, MediaType contentType,
HttpOutputMessage outputMessage) throws IOException {
Charset charset;
if (contentType != null) {
outputMessage.getHeaders().setContentType(contentType);
charset = (contentType.getCharset() != null ? contentType.getCharset() : this.charset);
}
else {
outputMessage.getHeaders().setContentType(MediaType.APPLICATION_FORM_URLENCODED);
contentType = (contentType != null ? contentType : DEFAULT_FORM_DATA_MEDIA_TYPE);
Charset charset = contentType.getCharset();
if (charset == null) {
charset = this.charset;
contentType = new MediaType(contentType, charset);
}
outputMessage.getHeaders().setContentType(contentType);
StringBuilder builder = new StringBuilder();
for (Iterator<String> nameIterator = form.keySet().iterator(); nameIterator.hasNext();) {
String name = nameIterator.next();