|
27 | 27 |
|
28 | 28 | import org.springframework.http.HttpHeaders;
|
29 | 29 | import org.springframework.http.HttpStatusCode;
|
| 30 | +import org.springframework.http.MediaType; |
30 | 31 | import org.springframework.lang.Nullable;
|
31 | 32 | import org.springframework.util.Assert;
|
32 | 33 | import org.springframework.util.CollectionUtils;
|
@@ -118,12 +119,13 @@ private void writeHeaders() {
|
118 | 119 | }
|
119 | 120 | });
|
120 | 121 | // HttpServletResponse exposes some headers as properties: we should include those if not already present
|
121 |
| - if (this.servletResponse.getContentType() == null && this.headers.getContentType() != null) { |
122 |
| - this.servletResponse.setContentType(this.headers.getContentType().toString()); |
| 122 | + MediaType contentTypeHeader = this.headers.getContentType(); |
| 123 | + if (this.servletResponse.getContentType() == null && contentTypeHeader != null) { |
| 124 | + this.servletResponse.setContentType(contentTypeHeader.toString()); |
123 | 125 | }
|
124 |
| - if (this.servletResponse.getCharacterEncoding() == null && this.headers.getContentType() != null && |
125 |
| - this.headers.getContentType().getCharset() != null) { |
126 |
| - this.servletResponse.setCharacterEncoding(this.headers.getContentType().getCharset().name()); |
| 126 | + if (this.servletResponse.getCharacterEncoding() == null && contentTypeHeader != null && |
| 127 | + contentTypeHeader.getCharset() != null) { |
| 128 | + this.servletResponse.setCharacterEncoding(contentTypeHeader.getCharset().name()); |
127 | 129 | }
|
128 | 130 | long contentLength = getHeaders().getContentLength();
|
129 | 131 | if (contentLength != -1) {
|
@@ -169,13 +171,15 @@ public String getFirst(String headerName) {
|
169 | 171 | }
|
170 | 172 |
|
171 | 173 | @Override
|
| 174 | + @Nullable |
172 | 175 | public List<String> get(Object key) {
|
173 | 176 | Assert.isInstanceOf(String.class, key, "Key must be a String-based header name");
|
174 | 177 |
|
175 | 178 | String headerName = (String) key;
|
176 | 179 | if (headerName.equalsIgnoreCase(CONTENT_TYPE)) {
|
177 | 180 | // Content-Type is written as an override so don't merge
|
178 |
| - return Collections.singletonList(getFirst(headerName)); |
| 181 | + String value = getFirst(headerName); |
| 182 | + return (value != null ? Collections.singletonList(value) : null); |
179 | 183 | }
|
180 | 184 |
|
181 | 185 | Collection<String> values1 = servletResponse.getHeaders(headerName);
|
|
0 commit comments