Skip to content

Commit 218e25c

Browse files
committed
SWS-950 Support RFC 7230 for HTTP headers
Make HTTP headers handle case insensitivity.
1 parent 6b3f990 commit 218e25c

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

spring-ws-core/src/main/java/org/springframework/ws/transport/http/HttpUrlConnection.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.net.URI;
2424
import java.net.URISyntaxException;
2525
import java.util.Collections;
26+
import java.util.HashMap;
2627
import java.util.HashSet;
2728
import java.util.Iterator;
2829
import java.util.List;
@@ -39,6 +40,7 @@
3940
*
4041
* @author Arjen Poutsma
4142
* @author Greg Turnquist
43+
* @author Oddgeir Gitlestad
4244
* @since 1.0.0
4345
*/
4446
public class HttpUrlConnection extends AbstractHttpSenderConnection {
@@ -119,12 +121,20 @@ public Iterator<String> getResponseHeaderNames() throws IOException {
119121

120122
@Override
121123
public Iterator<String> getResponseHeaders(String name) throws IOException {
122-
Map<String, List<String>> mapHeader = connection.getHeaderFields();
123-
List<String> listHeaderValues = mapHeader.get(name);
124-
if (listHeaderValues == null) {
124+
Map<String, List<String>> headersListMappedByLowerCaseName = new HashMap<>();
125+
126+
for (String key : connection.getHeaderFields().keySet()) {
127+
if (key != null) {
128+
headersListMappedByLowerCaseName.put(key.toLowerCase(), connection.getHeaderFields().get(key));
129+
}
130+
}
131+
132+
List<String> headerValues = headersListMappedByLowerCaseName.get(name.toLowerCase());
133+
134+
if (headerValues == null) {
125135
return Collections.<String>emptyList().iterator();
126136
} else {
127-
return listHeaderValues.iterator();
137+
return headerValues.iterator();
128138
}
129139
}
130140

spring-ws-core/src/test/java/org/springframework/ws/transport/http/AbstractHttpWebServiceMessageSenderIntegrationTestCase.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,9 @@
3636
import javax.xml.transform.TransformerFactory;
3737
import javax.xml.transform.dom.DOMResult;
3838

39-
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
4039
import org.custommonkey.xmlunit.XMLUnit;
4140
import org.junit.After;
4241
import org.junit.Assert;
43-
import static org.junit.Assert.assertEquals;
4442
import org.junit.Before;
4543
import org.junit.Test;
4644
import org.mortbay.jetty.Server;
@@ -59,6 +57,9 @@
5957
import org.springframework.xml.transform.StringResult;
6058
import org.springframework.xml.transform.StringSource;
6159

60+
import static org.custommonkey.xmlunit.XMLAssert.*;
61+
import static org.junit.Assert.assertEquals;
62+
6263
public abstract class AbstractHttpWebServiceMessageSenderIntegrationTestCase {
6364

6465
private Server jettyServer;
@@ -283,7 +284,7 @@ protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse
283284

284285
httpServletResponse.setStatus(responseStatus);
285286
if (response) {
286-
httpServletResponse.setContentType("text/xml");
287+
httpServletResponse.addHeader("content-type", "text/xml");
287288
if (contentLength != null) {
288289
httpServletResponse.setContentLength(contentLength);
289290
}

0 commit comments

Comments
 (0)