Skip to content

Commit a6b8977

Browse files
committed
fixed issue with reading response HTTP headers
1 parent 05cc2a1 commit a6b8977

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

core/src/main/java/org/springframework/ws/transport/http/CommonsHttpTransportInputStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public Iterator getHeaderNames() throws IOException {
6060
}
6161

6262
public Iterator getHeaders(String name) throws IOException {
63-
Header[] headers = postMethod.getRequestHeaders(name);
63+
Header[] headers = postMethod.getResponseHeaders(name);
6464
String[] names = new String[headers.length];
6565
for (int i = 0; i < headers.length; i++) {
6666
names[i] = headers[i].getValue();

core/src/main/java/org/springframework/ws/transport/http/HttpUrlConnectionTransportInputStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public Iterator getHeaderNames() throws IOException {
6969
// Header field 0 is the status line, so we start at 1
7070
int i = 1;
7171
while (true) {
72-
String headerName = connection.getHeaderField(i);
72+
String headerName = connection.getHeaderFieldKey(i);
7373
if (!StringUtils.hasLength(headerName)) {
7474
break;
7575
}

core/src/test/java/org/springframework/ws/transport/http/AbstractHttpWebServiceMessageSenderTestCase.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,13 @@ public abstract class AbstractHttpWebServiceMessageSenderTestCase extends XMLTes
5050

5151
protected Server jettyServer;
5252

53-
protected static final String HEADER_NAME = "SOAPAction";
53+
private static final String REQUEST_HEADER_NAME = "RequestHeader";
5454

55-
protected static final String HEADER_VALUE = "http://springframework.org/spring-ws";
55+
private static final String REQUEST_HEADER_VALUE = "RequestHeaderValue";
56+
57+
private static final String RESPONSE_HEADER_NAME = "ResponseHeader";
58+
59+
private static final String RESPONSE_HEADER_VALUE = "ResponseHeaderValue";
5660

5761
protected static final String URL = "http://localhost:8888";
5862

@@ -95,16 +99,22 @@ protected final void tearDown() throws Exception {
9599
public void testSendAndReceiveResponse() throws Exception {
96100
messageSender.setUrl(new URL("http://localhost:8888/response"));
97101
SOAPMessage saajRequest = messageFactory.createMessage();
98-
saajRequest.getMimeHeaders().addHeader(HEADER_NAME, HEADER_VALUE);
102+
saajRequest.getMimeHeaders().addHeader(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE);
99103
transformer.transform(new StringSource(REQUEST), new DOMResult(saajRequest.getSOAPBody()));
100104
SaajSoapMessage request = new SaajSoapMessage(saajRequest);
101105
MessageContext context = new DefaultMessageContext(request, new SaajSoapMessageFactory(messageFactory));
102106
messageSender.sendAndReceive(context);
103107
assertXMLEqual(EXPECTED_SOAP_REQUEST, receivedRequest.toString());
104-
assertEquals("Invalid header value received", HEADER_VALUE, receivedHeader);
108+
assertEquals("Invalid header value received on server side", REQUEST_HEADER_VALUE, receivedHeader);
105109
assertTrue("No response", context.hasResponse());
110+
SaajSoapMessage response = (SaajSoapMessage) context.getResponse();
111+
SOAPMessage saajResponse = response.getSaajMessage();
112+
assertNotNull("No header value received on client side",
113+
saajResponse.getMimeHeaders().getHeader(RESPONSE_HEADER_NAME));
114+
assertEquals("Invalid header value received on client side", RESPONSE_HEADER_VALUE,
115+
saajResponse.getMimeHeaders().getHeader(RESPONSE_HEADER_NAME)[0]);
106116
ByteArrayOutputStream os = new ByteArrayOutputStream();
107-
context.getResponse().writeTo(os);
117+
response.writeTo(os);
108118
assertXMLEqual(RESPONSE, os.toString("UTF-8"));
109119
}
110120

@@ -125,11 +135,12 @@ public void service(ServletRequest req, ServletResponse res) throws ServletExcep
125135
StringResult requestResult = new StringResult();
126136
transformer.transform(new StreamSource(req.getInputStream()), requestResult);
127137
receivedRequest = requestResult.toString();
128-
receivedHeader = ((HttpServletRequest) req).getHeader(HEADER_NAME);
138+
receivedHeader = ((HttpServletRequest) req).getHeader(REQUEST_HEADER_NAME);
129139

130140
HttpServletResponse httpServletResponse = (HttpServletResponse) res;
131141
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
132142
httpServletResponse.addHeader("Content-Type", "text/xml");
143+
httpServletResponse.addHeader(RESPONSE_HEADER_NAME, RESPONSE_HEADER_VALUE);
133144
FileCopyUtils.copy(RESPONSE.getBytes("UTF-8"), res.getOutputStream());
134145
}
135146
catch (TransformerException ex) {
@@ -145,7 +156,7 @@ public void service(ServletRequest req, ServletResponse res) throws ServletExcep
145156
StringResult requestResult = new StringResult();
146157
transformer.transform(new StreamSource(req.getInputStream()), requestResult);
147158
receivedRequest = requestResult.toString();
148-
receivedHeader = ((HttpServletRequest) req).getHeader(HEADER_NAME);
159+
receivedHeader = ((HttpServletRequest) req).getHeader(REQUEST_HEADER_NAME);
149160

150161
HttpServletResponse httpServletResponse = (HttpServletResponse) res;
151162
httpServletResponse.setStatus(HttpServletResponse.SC_NO_CONTENT);

0 commit comments

Comments
 (0)